请帮帮我。我被困了很长时间。我是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包进行面板回归分析的输入。 提前致谢。
答案 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))