R - 在聚合函数中将 NA 设置为零
R - setting NA to zero in an aggregate function
在 R 中,我正在尝试 运行 以下代码来查找数据框中多行的方差。多于1个case时方差计算正确,但ID1&ID2只有1个case时明显产生NA
collated <- aggregate(.~ID1+ID2, interactionData, FUN=var, na.rm=TRUE)
在上面的代码中,有没有办法强制R设置为0
而不是NA
(我知道我可以 运行 之后按照 collated[is.na(collated)] <- 0
编写一行代码。但是,我只是想知道是否可以在 aggregate
函数。
我们可以根据length
创建一个if/else
条件,将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))
在 R 中,我正在尝试 运行 以下代码来查找数据框中多行的方差。多于1个case时方差计算正确,但ID1&ID2只有1个case时明显产生NA
collated <- aggregate(.~ID1+ID2, interactionData, FUN=var, na.rm=TRUE)
在上面的代码中,有没有办法强制R设置为0
而不是NA
(我知道我可以 运行 之后按照 collated[is.na(collated)] <- 0
编写一行代码。但是,我只是想知道是否可以在 aggregate
函数。
我们可以根据length
创建一个if/else
条件,将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))