【发布时间】:2020-12-05 22:42:28
【问题描述】:
DF<-data.frame(id=c(1,2,3,4,5,6),date=c("2001-01-01","NA","2005-05-05","2006-06-06","2007-07-07","NA"))
id date
1 1 2001-01-01
2 2 NA
3 3 2005-05-05
4 4 2006-06-06
5 5 2007-07-07
6 6 NA
DF1<-data.frame(id=c(1,3,7,8,9,11),cdate=c("2000-12-20","2002-02-02","2003-03-03","2004-04-04","2005-05-05","2006-06-06"),atc=c("AAA1","BBB","AAA","DDD","CCC","AAA"))
id cdate atc
1 1 2000-12-20 AAA1
2 3 2002-02-02 BBB
3 7 2003-03-03 AAA
4 8 2004-04-04 DDD
5 9 2005-05-05 CCC
6 11 2006-06-06 AAA
DF2<-data.frame(id=c(1,2,3,4,8,9),cdate=c("2000-12-20","2002-02-02","2005-04-05","2004-04-04","2005-05-05","2006-06-06"),op=c("AA3","BB","AA","DD","CC","AA"))
id cdate op
1 1 2000-12-20 AA3
2 2 2002-02-02 BB
3 3 2005-04-05 AA
4 4 2004-04-04 DD
5 8 2005-05-05 CC
6 9 2006-06-06 AA
LM<-c("AAA","AA","BB")
现在我想检查 DF1 和 DF2 是否包含 DF 中的任何 id,其中 atc/op 以 LM 中的值开头。最后,cdate 不应比 date 早 90 年。
期望的输出:
id opatc
1 1 1
2 2 0
3 3 1
4 4 0
5 5 0
6 6 0
解决这个问题的最聪明的方法(最短的代码)是什么? 最佳H
【问题讨论】:
-
id 1 和 3 不应该像 DF1 和 DF2 那样在所需的输出中有两个结果
-
不,不然
标签: r