r - R中的分类变量
问题描述
我已将一些数据从 CSV 导入到 R 中,并希望将多个列从“文本”转换为分类变量。例如,如果我有以下提到的列:
Product
Product A
Product B
Product C
并想将其转换为我使用以下编码的分类变量:
plancat <- factor(Product,levels=c(1,2,3),labels = c("Product A","Product B","Product C"))
但是,它没有用。有人可以帮助我为什么会发生这种情况吗?
谢谢
解决方案
在 OP 中,它提到了“多列”。这是一些基于 OP 的数据,但有两列:
library(tidyverse)
Product1 <- c("Product A","Product B","Product C","Product A")
Product2 <- c("Product A","Product B","Product C","Product A")
df <- tibble(Product1, Product2)
这两列是character
类。使用mutate_at
from dplyr
/tidyverse
您可以指定将类转换为您想要的任何内容的列 - 在这种情况下factor
。您还可以传递列名向量,而不是单独调用列。
df %>%
mutate_at(c("Product1", "Product2"), list(~ factor(.)))
# A tibble: 4 x 2
Product1 Product2
<fct> <fct>
1 Product A Product A
2 Product B Product B
3 Product C Product C
4 Product A Product A
推荐阅读
- cloud - “允许从任何地方访问”MongoDB Atlas
- python - os.access 返回 True,但文件不可写
- c# - 如何为 appsettings.json 复杂数组使用选项模式
- c# - EF Core 选择的值未正确转换为 SQL 查询
- c# - c#中的概率计算器
- c - 逻辑 AND OR 和递增优先级
- c# - Asp.net Core 2.1 或 2.2 BOT SDK 4 invalid activity-missing Conversation.Id 访问参数时出错
- npm - 我的 node_modules 中没有 webpack.mix.js
- reactjs - React/Typescript Can't render a React.Fragment inside :
- android - 为什么 Android Studio 会交换 dev/kvm 的所有权?