我想在我的数据集的多个列中应用 ifelse 函数并创建新的“重新评分”列。这是一个示例数据集:
data = data.frame(year = "2021",
month = sample(x = c(1:12), size = 10, replace = TRUE),
C1 = sample(x = c('Off', 'Yes'), size = 10, replace = TRUE),
C2 = sample(x = c('Off', 'Yes'), size = 10, replace = TRUE),
C3 = sample(x = c('Off', 'Yes'), size = 10, replace = TRUE),
C4 = sample(x = c('Off', 'Yes'), size = 10, replace = TRUE),
C5 = sample(x = c('Off', 'Yes'), size = 10, replace = TRUE),
C6 = sample(x = c('Off', 'Yes'), size = 10, replace = TRUE),
C7 = sample(x = c('Off', 'Yes'), size = 10, replace = TRUE),
C8 = sample(x = c('Off', 'Yes'), size = 10, replace = TRUE),
C9 = sample(x = c('Off', 'Yes'), size = 10, replace = TRUE),
C10 = sample(x = c('Off', 'Yes'), size = 10, replace = TRUE))
我想在所有以 C 开头的行中应用这样的函数:
rescored = data %>%
mutate(T1 = ifelse(C1 == "Off", 1,
ifelse(C1 == "Yes", 0, NA)))
我的真实数据集有 50 行或更多行需要应用此函数。有没有一种简单的方法可以做到这一点?我已经尝试在 dplyr 中使用“across”的变体,如下所示,但没有成功。我敢肯定还有一个“应用”选项。
rescored = data %>%
mutate(across(C1:C50, ifelse(~ .x == "Off", 1,
ifelse(~.x == "Yes", 0, NA))))