私は2つのデータフレームstu1とstu2を持っています。両方とも一致するID列を持ちますが、他の列では変数が異なります。例えばrデータを2つのデータフレームに一致させ、一致する行の別の列にあるテキストをチェックします。
、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
に "Yes"または "No"という新しい列を作成します。
ので、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です! – juan
ありがとうございました!それはすごく素早く、助けてくれました!あなたは素晴らしかった:-) – Leila
これは本当にありがとう!私は今、すべてのプログラム用に新しい列を作成するように求められてきました。 5つのプログラムしかないので、コードをコピー&ペーストして検索を変更し、毎回新しい列を追加することができました。他のプログラム(LSC、BSC 1&2、KHL1:4)を検索する列を追加する方がシンプルでクリーンな方法がありますか?私は既存の提案で遊んでみましたが、すべて失敗しました。 – Leila