R:如何计算列中元素的每日数据的年度平均值和其他操作

时间:2016-03-05 18:24:59

标签: r data.table panel dplyr plm

请帮帮我。我被困了很长时间。我是R初学者,我想知道如何使用多个索引对数据帧元素执行操作,例如公司和时间在下面的情况下优雅?我想执行一些典型的操作,例如每个公司的一些其他变量的年度平均值,这是一个例子: 我想从数据集中所有公司的变量A和F的每日数据计算年度均值。这是我dataset。我使用过dplyr和hydroTSM包。以下是我的代码:

MeanA<- df %>% select(Firm, Date, A,) %>% group_by(Firm) %>% do(daily2annual(., A, FUN=mean, na.rm = TRUE, out.fmt="%Y", dates = 2))

它返回以下错误:

Error in eval(expr, envir, enclos) : argument is missing, with no default

我还尝试了data.table包并添加了一个额外的Year列。代码:

MeanA <- df[ , A, by = "Firm" & "Year"]

结果:

Error in `[.data.frame`(df, , A, by = "Firm" & "Year") : unused argument(by = "Firm" & "Year")

请建议出路(有或没有dplyr)。我将计算平均值以及其他年度值, 是使用plm包进行面板回归分析的输入。 提前致谢。

2 个答案:

答案 0 :(得分:1)

嗯,这不是一个很好的答案,但我已经厌倦了工作。如果你想要公司的年平均值,我从日期字段中提取年份,然后在aggregate函数中使用它。

df$Date = as.Date(df$Date, "%m/%d/%Y")
df$F = as.numeric(df$F)
df$Year = as.Date(paste(substr(df$Date, 1, 4), "1", "1",sep="-"), "%Y-%m-%d")
newDat = aggregate(cbind(A, E, F) ~ Firm + Year, df, FUN = mean)

答案 1 :(得分:0)

尝试

MeanA<- df %>%
    select(Firm, Date, A) %>%
    group_by(Firm) %>%
    do(daily2annual(., A, mean, na.rm = TRUE, dates = .$Date))