您好我有一个R数据框,如下所示:
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 obsject,看起来像:
SURVEY.DATE A B C
1898 2010-05-13 38 33.5 21
1897 2010-05-14 37 34 21
1896 2010-05-21 38.5 30.5 21
1894 2010-05-23 39 32 21
对我的新手R技能来说似乎是一个挑战...任何帮助/指针将不胜感激
答案 0 :(得分:2)
你可以尝试
library(dplyr)
res <- df1 %>%
group_by(SURVEY.DATE) %>%
summarise_each(funs(mean))
或者
res1 <- aggregate(.~SURVEY.DATE, df1, mean)
然后将其转换为xts
library(xts)
xts(res1[-1], order.by= as.Date(res1[,1]))
# A B C
#2010-05-13 38.0 33.5 21
#2010-05-14 37.0 34.0 21
#2010-05-21 38.5 30.5 21
#2010-05-23 39.0 32.0 21
答案 1 :(得分:1)
以下是我使用data.table
执行此操作的方法。
require(data.table)
setDT(df)[, lapply(.SD, mean), by=SURVEY.DATE]
# SURVEY.DATE A B C
# 1: 2010-05-13 38.0 33.5 21
# 2: 2010-05-14 37.0 34.0 21
# 3: 2010-05-21 38.5 30.5 21
# 4: 2010-05-23 39.0 32.0 21
如果您想了解更多信息,请查看new HTML vignettes。