我已将CSV中的一些数据导入到R中,并希望将多列从“文本”转换为分类变量。例如,如果我有以下提到的列:
sum
,并想将其转换为我使用以下编码的类别变量:
Product
Product A
Product B
Product C
但是,它没有用。有人可以帮我为什么会这样吗?
谢谢
答案 0 :(得分:1)
在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
/ 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
答案 1 :(得分:0)
因子水平和标签必须匹配。您可以轻松地将因子转换为数值:
Product <- c("Product A","Product B","Product C","Product A")
plancat <- factor(Product)
plancat
#[1] Product A Product B Product C Product A
#Levels: Product A Product B Product C
as.numeric(plancat)
#[1] 1 2 3 1