have
是一个7,000磅的数据帧,其字符为vars A
和B
。 A
总共有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_As
和have_Bs
数据帧。这似乎很麻烦,并且for循环需要很长时间才能运行。什么是更简单的解决方案?