繁体   English   中英

如何从R中的文本值创建分类变量

[英]How to create categorical variables from text values in R

我有一个带有分类变量Weather的数据集。 该变量有3个不同的文本值,即“Dry”,“Drizzle”和“Rain”。

我想创建另一个变量,我可以为这些变量分配数值。 例如, Dry将为1Drizzle将为2Rain将为3

作为辅助信息, weather变量将用于预测水系统中的阻塞,因此我将在某种线性回归模型中使用它。

我们可以转换为factor然后强制转换为integer

as.integer(factor(df1$Weather, levels = c("Dry", "Drizzle", "Rain"))

为了记录,这也可以做到这一点:

match(df1$Weather, c("Dry", "Drizzle", "Rain"))

这比@ akrun的解决方案略快(无论如何已经非常快):

x <- sample(c("Dry", "Drizzle", "Rain"), 1e6, rep=T)

microbenchmark::microbenchmark(
   as.integer(factor(x, levels = c("Dry", "Drizzle", "Rain"))),
   match(x, c("Dry", "Drizzle", "Rain"))
)

Unit: milliseconds
expr      min       lq       mean     median       
14.31158  18.13069  23.19702 20.98414 23.10840 
13.30326  16.00538  19.07544 17.59751 19.53679  

您可以转换为有序因子并为其指定标签:

data <- data.frame(Weather = c("Drizzle", "Rain", "Drizzle", "Rain", "Dry")) factor(data$Weather, levels = c("Dry", "Drizzle", "Rain"), labels = c(1, 2, 3), ordered=TRUE)

哪个将返回:

[1] 2 3 2 3 1 Levels: 1 < 2 < 3

您可能还想了解有关在线性回归模型中使用有序因子的信息。 这个问题可能是一个好的开始: https//stats.stackexchange.com/questions/33413/continuous-dependent-variable-with-ordinal-independent-variable

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM