我有一个大型数据框,其中列中的日期类似,但对这些日期的观察结果不同。我想平均具有相似日期的行,并生成一个xts系列。我的数据框如下所示:
SURVEY.DATE A B C
1898 2010-05-13 38 34 21
1899 2010-05-13 38 33 21
1897 2010-05-14 37 34 21
1895 2010-05-21 38 29 21
1896 2010-05-21 39 32 21
1894 2010-05-23 39 32 21
我想生成一个xts对象,如下所示:
A B C
2010-05-13 38 33.5 21
2010-05-14 37 34 21
2010-05-21 38.5 30.5 21
2010-05-23 39 32 21
可能微不足道,但我是R新手...任何帮助或指针赞赏
答案 0 :(得分:0)
我想你想要以下内容:
一些注意事项 - 日期列必须是正确的Date
类型(请注意我在as.Date()
中设置虚拟数据的mydf
)。
如果您的数据列SURVEY.DATE
是字符串,则需要对其进行as.Date()
才能生效。
第一步聚合得到平均值 - 。 ~SURVEY.DATE'表示法 - 用英语表示“其他一切反对SURVEY.DATE”。
第二步将其变为xts
对象。
我已将print
语句留在其中,以便您可以看到每个阶段的工作。
require(xts)
# set up and print the eample data
mydf <- data.frame(SURVEY.DATE = as.Date(c("2010-05-13", "2010-05-13", "2010-05-14", "2010-05-21", "2010-05-21", "2010-05-23")), A = c(38,38,37,38,39,39), B = c(34,33,34,29,32,32), C = c(21,21,21,21,21,21))
print(mydf)
# aggregate the dataframe by the SURVEY.DATE column
outdf <- aggregate(. ~ SURVEY.DATE, mydf,FUN=mean)
print(outdf)
# turn the dataframe into an xts object and print
outxts <- xts(outdf[,-1], order.by=outdf[,1])
print(outxts)