【发布时间】:2017-07-18 13:23:31
【问题描述】:
我有两个数据框 stu1 和 stu2。两者都有匹配的 ID 列,但其他列中的变量不同。
例如stu1:
ID, Grade, Group, Age
ad1, A, Green, 14
bc1, B, Green, 13
cd1, B, Blue, 14
fs3, C, Red, 13
stu2:
ID, Prog, Loc, Year
bc1, LSC1, Ext, 2013
cd1, LSC1, Ext, 2013
cd1, BSC1, Int, 2013
ad1, BSC2, Int, 2012
rs2, KHL4, Ext, 2014
我要做的是检查stu1 中的学生ID 是否存在于stu2 中,然后检查对应行的另一列中的文本是否与我的字符串匹配,例如Prog =='BSC*' 然后在stu1 中创建一个新列,其中显示“是”或“否”。
所以,stu1 的结果应该是:
ID, Grade, Group, Age, BSCProg
ad1, A, Green, 14, Yes
bc1, B, Green, 13, No
cd1, B, Blue, 14, Yes
fs3, C, Red, 13, No
我尝试了很多不同的方法都没有成功,例如:
stu1$BSCProg <- ifelse(stu2[grepl("BSC", stu2$Prog) & match(paste0(stu1$ID),
paste0(stu1$ID)),], "Yes", "No")
stu1$BSCProg <- ifelse(is.na(match(paste0(stu1$ID),
paste0(stu2$ID) & stu2[grepl("BSC", stu2$Prog),])),"No","Yes")
stu1$BSCProg <- ifelse(stu1$ID %in% stu2$ID & grepl('BSC', stu2$Prog), "Yes", "No")
【问题讨论】:
标签: r if-statement match grepl