如果值出现在其他数据框的列中,则创建新列

时间:2019-11-24 21:42:14

标签: r dataframe dplyr

我有一个带有列dfA的数据框SubscriberID

我想创建一个新列(ReceivedPre,其中填充10,具体取决于SubscriberID值是否出现在另一个数据框的列中,dfB

我尝试了以下操作:

within(dfA, {
  ReceivedPre = ifelse(SubID == dfB$SubID, 1, 0)
})

但收到警告消息:

Warning message:
In SubID == dfB$SubID :
  longer object length is not a multiple of shorter object length

我认为它的执行不完全正确,因为我应该在1列中获得更多的ReceivedPre值。

2 个答案:

答案 0 :(得分:2)

如果我们使用within,则分配将是<-而不是=,并且还将使用%in%而不是==

within(dfA, {
   ReceivedPre  <- ifelse(SubID %in% dfB$SubID, 1, 0)
   })

否则,它可以transform

transform(dfA, ReceivedPre = as.integer(SubID %in% dfB$SubID))

答案 1 :(得分:1)

您也可以使用dplyr

library(dplyr)
dfA <- dfA %>% mutate(ReceievedPre = if_else(SubID %in% dfB$SubID, 1, 0))