R中的类别变量

时间:2019-02-25 09:14:14

标签: r categorical-data

我已将CSV中的一些数据导入到R中,并希望将多列从“文本”转换为分类变量。例如,如果我有以下提到的列:

sum

,并想将其转换为我使用以下编码的类别变量:

Product

Product A
Product B
Product C

但是,它没有用。有人可以帮我为什么会这样吗?

谢谢

2 个答案:

答案 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