r - 将 df 中的值更改为 0 = FALSE、1 = TRUE、2 = TRUE
问题描述
我有一个包含 0、1 和 2 的数据框。我的目标是切换这些值,因此它显示为 0 的 FALSE 和 1 或 2 的 TRUE。
我尝试了 deplyr 的 case_when,但它没有提供预期的结果。
test <- data.frame("ID" = c("A", "B", "C", "D"),
"Primary" = c(0,0,2,1),
"Secondary" = c(1,0,1,2),
"Tertiary" = c(2,1,0,0))
test <- case_when(
test$Primary == 0 ~ "FALSE",
test$Primary != 0 ~ "TRUE",
test$Secondary == 0 ~ "FALSE",
test$Secondary != 0 ~ "TRUE",
test$Secretory == 0 ~ "FALSE",
test$Secretory != 0 ~ "TRUE",
test$Tertiary == 0 ~ "FALSE",
test$Tertiary != 0 ~ "TRUE")
上面的代码给了我一个字符向量,所有结果都在一行中,但我希望保持 df 结构。
解决方案
在基地R
可以做:
test[-1] <- test[-1] > 0
test
# ID Primary Secondary Tertiary
# 1 A FALSE TRUE TRUE
# 2 B FALSE FALSE TRUE
# 3 C TRUE TRUE FALSE
# 4 D TRUE TRUE FALSE
如果你坚持dplyr
+case_when
你可以这样做:
test[-1] <-
test %>%
select(-"ID") %>%
mutate_all(
funs(
case_when(
. == 0 ~ FALSE,
. %in% 1:2 ~ TRUE
)
)
)
推荐阅读
- flutter - 如果需要,允许扩展小部件占用更多空间
- python - 综合清单;如何使用获取的信息?
- artificial-intelligence - 使用 SSD 的对象检测哪种方式将提供更高的准确率和召回率
- list - 颤振传递列表到另一个类总是空的
- lua - roblox lua 通知切换
- reactjs - 为什么我无法在 React Hooks 中只使用一次道具?
- discord.py - 更改用户昵称时出现禁止错误
- apache-kafka - Wildfly 上的 Kafka 客户端抛出不受支持的回调异常
- python - tkinter 主类 App(tk.Tk) 使用哪些构造函数参数?
- java - 如何使用 ProcessBuilder 重定向 python 脚本的输出?