原始数据框如下所示,它包括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中的代码处理这些数据?提前谢谢!
答案 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)