for if else循环 - 根据匹配来自不同数据帧的列填充列中的值

时间:2016-06-17 17:13:15

标签: r loops if-statement

我有两个数据帧。

df1

ID  Name   
A1  Dave
B2  Bob
C1  Sheila   
D1  Tim   


df2

ID   Focal
A1      0
B1      0
C1      0
D1      0
E1      0
F1      0

如果df1 $ ID中的值与df2 $ ID匹配,我想用1填充“Focal”列。

我尝试用以下方式循环:

for (i in 1:length(df2)){
  if (df1$ID[i] == df2$ID[i]){df2$Focal[i] = 1}
  else {df2$Focal[i] = 0}
}

但是得到错误说级别因素不同。

1 个答案:

答案 0 :(得分:2)

我们可以使用%in%

df2$Focal <- as.integer(df2$ID %in% df1$ID)