R表示时间段和每组的平均差异

时间:2017-07-20 09:48:06

标签: r dplyr

我的数据如下所示:

           Land happy gincdif uempla year
    1 Austria     8       2      0 2012
    2 Austria     4       1      0 2002
    3 Austria     7       2      0 2009
    4 Germany     9       4      0 2008
    5 Germany     9       4      0 2002
    6 Germany     5       1      0 2010 

我已经使用dplyr计算了每年快乐和Land的平均值:

   DG <- dgf %>%
      group_by(year) %>%
      mutate(mean.ha = mean(happy, na.rm=T))

现在我想计算2008年和2010年之间mean.ha的差异。我尝试了这段代码:

    DG <- dgf %>%
       group_by(year) %>%
       mutate(mean.ha = mean(happy, na.rm=T)) %>%
       mutate(diff.ha = mean.happy[year==2010] - 
       mean.happy[year==2008])

但我只在行中获得NA。也许是因为并非因为2008年和2012年的每一块土地都存在观察结果。

有人为我提供解决方案吗?我想计算这段时间内幸福感的下降。

非常感谢!

1 个答案:

答案 0 :(得分:0)

dgf = data.frame(year = c(2008,2009,2010,2011), 
                 happy = c(1,0,0,1))

DG <- dgf %>%
  group_by(year) %>%
  mutate(mean.ha = mean(happy, na.rm=T)) %>% 
  .[.$year == 2008 | .$year == 2010, "mean.ha"] %>% 
  unlist() %>% 
  diff()