如何根据R中的其他行选择行?

时间:2017-04-05 16:48:49

标签: r

原始数据框如下所示,它包括id年和其他两个变量 - 列表和值。对于行的列表varible等于1,我想保留行具有相同的id但年份是年+ 1和年-1。

id  year    list    value
1   2008    0   23
1   2009    0   33
1   2010    1   56
1   2011    0   14
1   2012    0   23
2   2008    0   45
2   2009    0   38
2   2010    0   16
2   2011    1   7
2   2012    0   26

最终的数据框是

id  year    list    value
1   2009    0   33
1   2011    0   14
2   2010    0   16
2   2012    0   26

R中的代码处理这些数据?提前谢谢!

1 个答案:

答案 0 :(得分:0)

如果您知道每个ID最多只有一个psql \dT+,则可以使用list=1 dplyr来电。例如

filter()

带有示例输入

library(dplyr)
dd %>% group_by(id) %>% filter(year %in% (year[list==1] + c(-1,1)))
#      id  year  list value
# <int> <int> <int> <int>
# 1     1  2009     0    33
# 2     1  2011     0    14
# 3     2  2010     0    16
# 4     2  2012     0    26

如果每个ID有多个,那么这应该可行

dd<-read.table(text="id  year    list    value
1   2008    0   23
1   2009    0   33
1   2010    1   56
1   2011    0   14
1   2012    0   23
2   2008    0   45
2   2009    0   38
2   2010    0   16
2   2011    1   7
2   2012    0   26", header=T)