【发布时间】:2021-09-28 15:18:33
【问题描述】:
我正在尝试创建一个new column,它查看数据帧 A 中的 column 1 是否与数据帧 B 中的 column 1 匹配,以及数据帧中的 output 列中的值是否匹配B.如果数据帧A中的column 1在数据帧B中的column 1中没有找到匹配项。查看数据帧A中的column 2和数据帧B中的column 2是否匹配,以及是否匹配从数据帧 B 中获得output 2。如果没有匹配项,则为零。
这是我的尝试,我认为它是半有效的,但它给了我很多 NA,其中很多 NA 是错误的,因为数据帧之间的列中存在匹配,但它仍然显示为 NA。任何帮助将不胜感激。
dataframeA<-dataframeA %>% mutate(newcolumn=ifelse(column1 %in% dataframeB$column1, dataframeB$output, ifelse(column2 %in% dataframeB$column2, dataframeB$output2,NA)))
我尝试使用 case_when 但这不起作用,因为我希望输出值来自列。
编辑这里是来自@bloxx 帮助的一些示例数据
dataframeA<- data.frame(Column1 = c("a", "b", "c", "f"),
Column2 = c("a", "a", "a", "f"))
dataframeB<- data.frame(Column1 = c("b", "b", "c", "e", "f", "g", "h"),
Column2 = c("a", "b", "a", "e"),
Output = c("B", "B", "B", "B","B","B","B"),
Output2 = c("D", "D", "D", "D"))
dataframeA <- dataframeA %>%
mutate(new_variable = ifelse(Column1 %in% dataframeB$Column1,
dataframeB$Output,
ifelse(Column2 %in%
dataframeB$Column2,dataframeB$Output2, 0 )))
在我的数据集中,dataframeB有不同的长度,但即使长度相同,也有很多NA。
谢谢
【问题讨论】:
-
请分享reproducible example,包括您使用的数据的一个小例子。
-
如果您提供示例数据和所需的输出,这个问题(很可能)会得到改善并获得更好的答案。
-
对我来说,您的问题听起来更像是一个连接而不是 ifelse 问题。看看 dplyr 的
left_join和coalesce函数。
标签: r if-statement dplyr conditional-statements