求和R矩阵忽略NA';s
我有以下按限额列出的索赔计数数据(三角形):求和R矩阵忽略NA';s,r,matrix,sum,dataframe,R,Matrix,Sum,Dataframe,我有以下按限额列出的索赔计数数据(三角形): claims=matrix(c(2019,690,712,NA,773,574,NA,NA,232),nrow=3, byrow=T) 做以下类似Excel的sumif()的简单事情,最优雅的方法是什么 将矩阵放入as.data.frame()中,列名称为:“100k”、“250k”、“500k” 除第一行外的所有数字总和;(在这种情况下,求和773574和232)。我正在寻找一个简洁的参考,这样我就可以很容易地将符号推广到更大的索赔三角形 将所
claims=matrix(c(2019,690,712,NA,773,574,NA,NA,232),nrow=3, byrow=T)
做以下类似Excel的sumif()
的简单事情,最优雅的方法是什么
as.data.frame()
中,列名称为:“100k”、“250k”、“500k”sumif()
或成对链接比率之类的计算?如果有人能说出一些智慧的话,这对我来说将是一个奖励
谢谢大家!
claims=matrix(c(2019,690,712,NA,773,574,NA,NA,232),nrow=3, byrow=T)
claims.df = as.data.frame(claims)
names(claims.df) <- c("100k", "250k", "500k")
# This isn't the best idea because standard column names don't start with numbers
# If you go non-standard, you'll have to always quote them, that is
claims.df$100k # doesn't work
claims.df$`100k` # works
# sum everything
sum(claims, na.rm = T)
# sum everything except for first row
sum(claims[-1, ], na.rm = T)
我不知道什么是成对链接比率,但我愿意打赌基数R可以很容易地处理它。看看
?sum
,注意你可以设置na.rm=t
@akrun谢谢,它很有效。@精算师看到了一些“sumif”示例的编辑。非常感谢你的写作,我肯定从你的示例中学到了。在它们中,您使用了x,y-它们是数据帧名称吗?我假设示例3用于如下情况:x=matrix(示例(9),nrow=3);y=基质(样品(9),nrow=3);总和(x[x>5&y>3])
?在这种情况下,y
几乎像某种逻辑指示符矩阵一样工作,请告诉我这是否是您的示例的意思?在我的示例中,x
和y
只是向量,可以是矩阵的行或列,也可以是数据帧的列。(定义x
runis(x)
后,可以查看有关它是什么的许多详细信息。)是的,当使用布尔运算符时,就是将向量转换为逻辑指示符。在我的示例中,您可以运行方括号内的内容来查看,例如:x>0
,y<0.5
,x>0&y<0.5
。第四个示例说明了“回收”,在整个x
长度内回收T,F
模式。
# sum x if x > 0
sum(x[x > 0])
# sum x if y < 0.5
sum(x[y < 0.5])
# sum x if x > 0 and y < 0.5
sum(x[x > 0 & y < 0.5])
# sum every other x
sum(x[c(T, F)]
# sum all but the first 10 and last 10 x
sum(x[-c(1:10, 91:100)]