检查字符串是否在数据框的列中,如果不是,则将其添加到数据框的末尾,值为0?

时间:2018-11-13 22:49:32

标签: r match

我有两个这样的数据框:

df1:

Letter Value
A       5
C       2
E       3

和df2:

Letter 
A
B  
C
D  
E 

我想查找df2中的Letter与df1中的Letter不匹配的情况,并在这种情况下,将df2中的Letter添加到df1中,并将其值设置为0。

所以:

Letter Value
A      5
B      0
C      2
D      0
E      3

任何帮助都会很棒。我一点也不擅长R。

编辑: 我尝试了类似的方法,但是它不起作用:

for (i in df1$Name){
  for (j in df2$Name){
    if(strcmpi(i, j)){
      # do nothing
    } else{
      rbind(df1, df2[i,])
    }  
  }
}

1 个答案:

答案 0 :(得分:1)

df2 $Value <- ifelse (df2$Letter %in% df1$Letter,   # condition
                       df1$Value[match(df2$Letter,df1$Letter)], #value if TRUE
                       0)   # itherwise
df2
  Letter Value
1      A     5
2      B     0
3      C     2
4      D     0
5      E     3

match函数用于返回其他向量的索引,其长度与第一个参数一样长。