我有一个包含许多变量(村庄,房屋,周)的数据框(监视)。我想最终做一个时间序列分析。
目前,每个村庄有1-183周,每个村庄都有几个相关的房屋。我需要以下内容:每个村庄每周都有一个数据点。因此,我需要总结第三个变量。
实施例:
乡村周家屋影响
A 3 7 12
B 6 3 0
C 6 2 2
A 3 9 1
A 5 8 0
A 5 2 8
C 7 19 0
C 7 2 1
我试过这个并且失败了。我如何要求R仅对具有相同村庄和周值的观测值进行求和?
for (i in seq(along=surveillance)) {
if (surveillance$village== surveillance$village& surveillance$week== surveillance$week)
{surveillance$sumaffect <- sum(surveillance$affected)}
}
谢谢
答案 0 :(得分:0)
无需循环。使用ddply
或类似的
library(plyr)
Village = c("A","B","C","A","A","A","C","C")
Week = c(3,6,6,3,5,5,7,7)
Affect = c(12,0,2,1,0,8,0,1)
df = data.frame(Village,Week,Affect)
View(df)
result = ddply(df,.(Village,Week),summarise, val = sum(Affect))
View(result)
DF:
Village Week Affect
1 A 3 12
2 B 6 0
3 C 6 2
4 A 3 1
5 A 5 0
6 A 5 8
7 C 7 0
8 C 7 1
结果:
Village Week val
1 A 3 13
2 A 5 8
3 B 6 0
4 C 6 2
5 C 7 1
答案 1 :(得分:0)
函数aggregate
将满足您的需求。
dfs <- ' Village Week House Affect
1 A 3 7 12
2 B 6 3 0
3 C 6 2 2
4 A 3 9 1
5 A 5 8 0
6 A 5 2 8
7 C 7 19 0
8 C 7 2 1
'
df <- read.table(text=dfs)
然后聚合
> aggregate(Affect ~ Village + Week , data=df, sum)
Village Week Affect
1 A 3 13
2 A 5 8
3 B 6 0
4 C 6 2
5 C 7 1
这是拆分 - 应用 - 合并策略的一个例子;如果您经常这样做,您应该调查dplyr
(或plyr
,其祖先)或data.table
作为快速进行此类分析的替代方案。
编辑:已更新为使用sum
而不是mean