【发布时间】:2018-12-12 03:58:34
【问题描述】:
假设我有如下数据:
structure(list(A = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 8), B = c(0, 1, 1, 0, 0, 1, 4, 9.2, 9, 0, 0, 1), C = c(2, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 8)), .Names = c("A", "B", "C"), row.names = c(NA, -12L), class = "data.frame")
现在我想为这些列创建虚拟变量,其中 0 的比例大于0.5。如果原始列中有0,则这些虚拟变量的值为0,如果相反,则为1。我怎样才能用dplyr 做到这一点?我在想data %>% mutate_if(~mean(. == 0) > .5, ~ifelse(. == 0, 0, 1)),但这是在原地运行,我需要创建名为例如的新变量。 A01、C01 并保留旧的 A 和 C。
【问题讨论】:
-
试试
df1 %>% mutate_if(~mean(. == 0) > .5, funs("01" = ifelse(. == 0, 0, 1))) -
工作完美,谢谢!