我在R中有两个数据框(df1和df2),它们包含不同的信息,除了两列:一个人员编号(pnr)和一个药品名称(name)。在df1中,逐行检查pnr和name的组合是否存在于df2中。如果存在,则在df1中的另一列中写入“是”。如果不存在,则写入“否”。
df1
pnr|drug|...|check
---|----|---|-----
1 | 1 |...| no
1 | 2 |...| yes
2 | 2 |...| yes
3 | 2 |...| no
.....
df2
pnr|drug|...|
---|----|---|
1 | 2 |...|
2 | 2 |...|
....
例如,我想检查在df2中是否存在行组合pnr=1 & drug=1(否),pnr=1 & drug=2(是)等。然后在df1中的check列中放置一个"yes"或"no"。
我尝试了以下代码,但没有成功。它确实在"check"列中放置了"yes"或"no",但并不正确。
for(index in 1:nrow(df1)){
if((df1[index,]$pnr %in% df2$pnr)&(df1[index,]$name %in% df2$name)){
check_text="yes"}else{check_text="no"}
df1$check=check_text
}
我感觉应该使用apply
,但是一直没有找到解决方法。你们有没有什么办法解决这个问题?