2017-07-20 31 views
1

我的数据如下所示:R平均值时间的差异,每组

  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:

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

现在我我想试试这个代码:

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

分组必须通过“土地”,而不是“年”,否则你只能在同一年,组内访问值,即你想要做一下'gincdif什么做组 –

+0

之间没有可比性'变量?这会导致重复的土地/年份组合。 – Joe

回答

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()