我想通过按组new
计算变量old
的平均值来添加变量groupID
。
创建数据框
df <- data.frame('old'=c('20','21',NA,'30','31'), 'groupID'=c(1,1,1,2,2))
在函数内使用以创建新变量
df <- within(df, {new = ave(old, groupID, FUN= mean)})
但是,“旧”中的NA使“新”中的所有值变为缺失值。 如何忽略NA并仍然获得新变量的均值?
完美的结果必须是这样的:
df<-data.frame('old'=c('20','21',NA,'30','31'),
'groupID'=c(1,1,1,2,2),
'new'=c(20.5,20.5,20.5,30.5,30.5))
非常感谢初学者!
答案 0 :(得分:1)
df <- within(df, {new = ave(old, groupID, FUN= function(x) mean(x, na.rm=TRUE))})
如果您不想以其他(数字)格式重写所有输入数据,