我希望创建一个变量
我将尝试通过以下方式实现:
很不幸,这还不能正常工作,因为 R 不知道
x
,该变量是变量e
和变量a、b、c
或d
中的其中一个的乘积。所得变量应该取值a * e
,但如果a
为NA
,则应该取值b * e
,如果a & b
都缺失,则应该取值c * e
以此类推。
例如:如果我的数据框如下:
df <- data.frame(a = c(1, 2, NA, NA, 5), b = c(NA, 1, NA, 4, 6), c = c(NA, 3, 3, 3, 7), d = c(1, 1, 1, 1, 1), e = c(1, 2, 3, 4, NA))
我希望能够获得以下结果:
df$x <- c(1, 4, 9, 16, NA)
我将尝试通过以下方式实现:
df <- df %>% mutate(x = case_when(!is.na(a) ~ a * e, is.na(a) ~ b * e, is.na(a) & is.na(b) ~ c * e, is.na(a) & is.na(b) & is.na(c) ~ d * e))
很不幸,这还不能正常工作,因为 R 不知道
is.na(a) & is.na(b)
表示两个值同时缺失的意思。
is.na(a) & is.na(b)
时会发生什么?为什么它不能像a>1 & b>2
那样工作? - Anton