我有兩個數據幀stu1和stu2。兩者都有匹配的ID列,但在其他列中有不同的變量。r匹配兩個數據幀中的數據,然後檢查另一列中匹配行的文本
例如,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")
簡單,並且爲'%like%'+1 +1! – juan
謝謝!這非常快,非常有幫助!你太棒了:-) – Leila
非常感謝!我現在被要求爲每個程序創建新的列。只有5個程序,所以我能夠複製和粘貼代碼來更改搜索並每次添加新列。除此之外,爲了提高我的R技能,是否有更簡單更清晰的方式來添加額外的列來搜索其他程序(LSC,BSC 1和2,KHL1:4)?我試着玩弄現有的建議,但都失敗了。 – Leila