我有一个包含1000个观察结果的数据框。
对于每个观察,我得到了五个变量。现在我想创建一个新变量,它是这5个变量的聚合。
我键入以下内容:
df$aggr_variable <- (1/5)*(var1+var2+var3+var4+var5)
然后我得到了新的聚合变量,但也是一个问题。如果让我们说观察839在NA
中得到一个缺失值var2
,但仍然是其他四个变量的值,它会在聚合变量中给出NA
。
如果一个变量包含NA,我怎样才能将五个变量中的NA保留在外?而不必忽略整个观察结果?
答案 0 :(得分:0)
根据您的聚合方程,您计算每个样本(行)的这五个变量的平均值。
#some reproduciable data
df <- data.frame(var1=rnorm(20,10,5),var2=rnorm(20,5,1),var3=rnorm(20,30,1),
var4=rnorm(20,0,1),var5=rnorm(20,3,3))
#generates some NAs:
df[11,5] <- NA
df[8,3] <- NA
df[9,1] <- NA
df[17,2] <- NA
df[11,2] <- NA
#aggregate by mean
df$aggr_variable <- apply(df,1,function(x){mean(x,na.rm=T)})