我正在尝试向我的数据框添加一个方法列,我可以在许多不同的列上运行一些代码,即使它们包含NA(我认为排除了很多可能性)。
我能做的最好的事情是:
TestData <- data.frame(geo=c(rep("AT",4),rep("DE",4)),time=c(rep(c(1990:1993),2)),value=c(NA,4,20,6,NA,NA,5,3))
mean <- aggregate(value~geo, TestData, mean)
按类别(地理位置)计算正确的均值。我怎样才能将它们连接到数据框,这样平均值不仅仅是一个观察点,而是在每个时间点出现?我正在考虑ddply,但无法让它正常工作。我正在寻找的数据框是:
geo time value mean (or optionally, no problem for me)
1 AT 1990 NA 10 NA
2 AT 1991 4 10 10
3 AT 1992 20 10 10
4 AT 1993 6 10 10
5 DE 1990 NA 4 NA
6 DE 1991 NA 4 NA
7 DE 1992 5 4 4
8 DE 1993 3 4 4
任何帮助将不胜感激!
答案 0 :(得分:2)
尝试:
testData1 <- within(TestData, {
Mean <- ave(value, geo, FUN=function(x) mean(x, na.rm=TRUE))
Mean[is.na(value)] <- NA}) #If you don't want `NA` values don't use this step
testData1
# geo time value Mean
#1 AT 1990 NA NA
#2 AT 1991 4 10
#3 AT 1992 20 10
#4 AT 1993 6 10
#5 DE 1990 NA NA
#6 DE 1991 NA NA
#7 DE 1992 5 4
#8 DE 1993 3 4
如果您想查找名为mean
的{{1}}多列的starts
:
例如:
value