R:每年/在国家平均值内创建

时间:2016-03-24 16:09:09

标签: r

我试图创建一个平均变量来计算不同年份国家内观察的平均国家级值。

我的数据如下:

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年比利时各方的平均位置,依此类推。

1 个答案:

答案 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'))