我正在尝试根据某些条件创建一个新变量。
我的数据看起来像
a b
1 NA
2 3
3 3
NA 2
NA NA
我想要的是一个变量
c
以至于a
不是 NA
, b
是 NA
, c = a
a
是 NA
, b
不是 NA
, c = b
a
是 NA
, b
是 NA
, c = NA
a
不是 NA
, b
不是 NA
, 和 a == b
, c = a
a
不是 NA
, b
不是 NA
, 和 a != b
, c = "multiple_values"
我怎样才能做到这一点?
好像
ifelse()
不能做我想做的事。
最佳答案
除了条件之一,即'a','b'中的非NA元素,并且它们彼此不相等,所有其他条件都满足coalesce
.所以,我们可以做一个 case_when
通过应用 coalesce
根据最后一个条件和所有其他条件生成“multiple_values”
library(dplyr)
df1 %>%
mutate(c = case_when(!is.na(a) & !is.na(b) & a != b ~ "multiple_values",
TRUE ~ as.character(coalesce(a, b))))
# a b c
#1 1 NA 1
#2 2 3 multiple_values
#3 3 3 3
#4 NA 2 2
#5 NA NA <NA>
数据
df1 <- structure(list(a = c(1L, 2L, 3L, NA, NA), b = c(NA, 3L, 3L, 2L,
NA)), class = "data.frame", row.names = c(NA, -5L))
关于r - 如何根据 R 中的条件创建新变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55672622/