我有一个像这样的数据框
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所取的值。有人可以帮我吗?
非常感谢。
答案 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