我试图创建一个平均变量来计算不同年份国家内观察的平均国家级值。
我的数据如下:
party_id year country position
101 1984 be 2.75
101 1988 be 2.75
101 1992 be 3.33
101 1996 be 3.67
102 1984 be 5.80
102 1988 be 5.80
例如,我想要一个平均变量,它具有1984年比利时各方的平均位置,依此类推。
答案 0 :(得分:2)
使用aggregate
,您可以按国家/地区和年份获得平均值
aggregate(position ~ country + year, data = df, mean)
country year position
1 be 1984 4.275
2 be 1988 4.275
3 be 1992 3.330
4 be 1996 3.670
另一种可能更具可读性的方法是使用dplyr
library(dplyr)
df %>%
group_by(country, year) %>%
summarise(mean(position))
修改 - OP请求将变量添加到您可以使用的数据mutate
df %>%
group_by(country, year) %>%
mutate(mean(position))
@bouncyball建议的基础解决方案
merge(x = df,y = aggregate(position~year+country, data = df, FUN = mean),
by = c('year','country'))