使用相同的日期字段聚合数据

时间:2015-03-24 11:07:03

标签: r aggregation

我有一个大型数据框,其中列中的日期类似,但对这些日期的观察结果不同。我想平均具有相似日期的行,并生成一个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新手...任何帮助或指针赞赏

1 个答案:

答案 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)