V1<-c("Apple", "Orange", "NA", "NA")
V2<-c("NA", NA", "Strawberries", "NA")
V3<-data.frame(V1, V2)
想要获得以下信息:
V4<-c("Apple", "Orange", "Strawberries", "NA")
V4<-data.frame(V4)
有什么建议吗?谢谢!
答案 0 :(得分:0)
V1<-c("Apple", "Orange", "NA", "NA")
V2<-c("NA", "NA", "Strawberries", "NA")
V3<-data.frame(V1, V2)
V3$V4 <- with(V3, ifelse(V1 == "NA" & V2 != "NA", as.character(V2),
ifelse(V1 != "NA" & V2 == "NA", as.character(V1), "NA")))
这给出了:
V1 V2 V4
1 Apple NA Apple
2 Orange NA Orange
3 NA Strawberries Strawberries
4 NA NA NA
答案 1 :(得分:0)
使用(*ArbitraryType)&buffer[0]
的{{1}},也不要将字符串作为因素读取:
dplyr
答案 2 :(得分:0)
还可以使用dplyr中的coalesce
。
我喜欢它,因为与嵌套的V1<-c("Apple", "Orange", NA, NA)
V2<-c(NA, NA, "Strawberries", NA)
V3 <-data.frame(V1, V2, stringsAsFactors = FALSE)
library(dplyr)
V3 %>% mutate(V4 = coalesce(V1, V2))
V1 V2 V4
1 Apple NA Apple
2 Orange <NA> Orange
3 <NA> Strawberries Strawberries
4 <NA> <NA> <NA>
子句相比,跟踪发生的事情要容易得多:
case_when
在这种情况下,差异可能不会太大,但是测试的条件越多,越容易获得。例如,如果您还需要处理两列中都存在非“ NA”值的情况,则可以将其简单地扩展为:
ifelse