标记出现在一个向量中但不在另一个向量中的字符串(R)

时间:2019-05-03 16:09:30

标签: r data-manipulation flags data-cleaning

have是一个7,000磅的数据帧,其字符为vars ABA总共有400个唯一值,而B总共有6,500个唯一值。

obs A           B
  1 TJ.D        KING.B
  2 GRETCHEN.W  TJ.D
  3 GUS.G       GRETCHEN.W
  4 MIKEY.B     GUS.G
  ...

A的值有时但不总是出现在B中。我需要标记{strong>不出现在A中的B的值。显示的子集的结果如下所示:

obs A           B           flg_A_only
  1 TJ.D        KING.B               0
  2 GRETCHEN.W  TJ.D                 0
  3 GUS.G       GRETCHEN.W           0
  4 MIKEY.B     GUS.G                1

由于MIKEY.B仅出现在A中。我目前的方法效率很低:

have_As <- as.data.frame(unique(have$A), stringsAsFactors = F)
colnames(have_As) <- c("A")

have_Bs <- as.data.frame(unique(have$B), stringsAsFactors = F)
colnames(have_Bs) <- c("B")

have_As$flg_A_only <- 99

for(i in 1:nrow(have_As)){
  for(j in 1:nrow(have_Bs)){
    have_As$flg_A_only[i] <- if_else(have_As$A[i] == have_Bs$B[j], 1, 0)
  }
}

...然后合并have_Ashave_Bs数据帧。这似乎很麻烦,并且for循环需要很长时间才能运行。什么是更简单的解决方案?

0 个答案:

没有答案