r - 仅对 R 中的分类变量进行分类
问题描述
我在 R 中有一个像这样的 df
isHot isCrispy Restaurant
1 0 A
0 0 B
1 1 B
0 0 C
我希望数据集看起来像这样:
isHot isCrispy Restaurant
1 0 0
0 0 1
1 1 1
0 0 2
我怎样才能做到这一点?
我试过这个,但我得到的东西从 0 而不是 1 开始。如果我减去 1,那么其他列就会变成 0 和 -1。
df %>% sapply(unclass)
isHot isCrispy Restaurant
1 0 1
0 0 2
1 1 2
0 0 3
解决方案
使用across
您可以将函数应用于所有字符或因子列。match
+unique
会给每个值一个唯一的数字,-1
确保它们从 0 开始。
library(dplyr)
df %>%
mutate(across(where(~is.character(.) | is.factor(.)),
~match(., unique(.)) - 1))
# isHot isCrispy Restaurant
#1 1 0 0
#2 0 0 1
#3 1 1 1
#4 0 0 2
推荐阅读
- css - 如何使 ScrollBar 在移动设备中始终可见?(CSS) (iPhone)
- ios - 子视图框架不随视图控制器移动
- javascript - setTimeout 的替代方案?
- react-native - “警告:列表中的每个孩子都应该有一个唯一的关键道具”当他们这样做时
- javascript - 防止在使用媒体查询时应用某些 css 元素
- java - QueueChannel如何消费一些费率?
- java - OSGI:Activate 和 Bind 方法在重新启动捆绑包后更改启动顺序
- docker - 如何在 Nexus3 OSS 中找到 Groupid 和 Artifactid?
- javascript - 使用引导菜单在 capybara 中注销
- apache-spark - 如何在 Spark UDF 中设置小数返回类型的精度和小数位数?