我有一个带有列dfA
的数据框SubscriberID
。
我想创建一个新列(ReceivedPre
,其中填充1
或0
,具体取决于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
值。
答案 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))