R

时间:2019-11-17 16:52:37

标签: r

我有一个像这样的数据框

id year var
1  2000 0
1  2000 0
1  2001 1
1  2001 0
1  2001 0
1  2002 1
1  2002 0
1  2003 1
2  2004 0
2  2004 1
2  2005 0
2  2006 0
2  2006 0
2  2007 1

我想按ID和年份对数据框进行分组,并按组创建一个“ leaded”变量。换句话说,我想获得此输出

id year var leadvar
1  2000 0   1
1  2000 0   1
1  2001 1   0
1  2001 1   0
1  2001 1   0
1  2002 0   1
1  2002 0   1
1  2003 1   NA
2  2004 0   0
2  2004 0   0
2  2005 0   0
2  2006 0   1
2  2006 0   1
2  2007 1   NA

其中,leadvar只是变量var在下一年中对相同id所取的值。有人可以帮我吗?

非常感谢。

1 个答案:

答案 0 :(得分:1)

一个dplyr选项可能是:

df %>%
 group_by(id) %>%
 mutate(lead_var = lead(var)) %>%
 group_by(id, year) %>%
 mutate(lead_var = last(lead_var))

      id  year   var lead_var
   <int> <int> <int>    <int>
 1     1  2000     0        1
 2     1  2000     0        1
 3     1  2001     1        0
 4     1  2001     1        0
 5     1  2001     1        0
 6     1  2002     0        1
 7     1  2002     0        1
 8     1  2003     1       NA
 9     2  2004     0        0
10     2  2004     0        0
11     2  2005     0        0
12     2  2006     0        1
13     2  2006     0        1
14     2  2007     1       NA