R - 在聚合函数中将NA设置为零

时间:2016-03-11 16:44:00

标签: r missing-data var aggregation

在R中,我正在尝试运行以下代码来查找数据框中多行的方差。当存在多于1个案例时,正确地计算方差,但是当只有一个ID1和ID2的情况时,显然会产生NA

collated <- aggregate(.~ID1+ID2, interactionData, FUN=var, na.rm=TRUE) 

在上面的代码中,有没有办法强制R设置为0而不是NA

(我知道我可以在collated[is.na(collated)] <- 0之后运行一行代码。但是,我只是想知道在aggregate函数中是否有所有这样做。

1 个答案:

答案 0 :(得分:1)

我们可以根据if/else创建length条件,将length的条件输出为1到0或else获取变量的var

aggregate(.~ID1+ID2, interactionData, FUN=function(x)
         if(length(x)==1) 0 else var(x, na.rm=TRUE))

数据

set.seed(24)
interactionData <- data.frame(ID1= rep(1:4, each=3), 
  ID2= sample(LETTERS[1:5], 12, replace=TRUE), value= rnorm(12))