首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从R中的文本值中创建分类变量

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

Stack Overflow用户
提问于 2016-06-03 18:32:02
回答 3查看 3.6K关注 0票数 2

我有一个带有分类变量Weather的数据集。这个变量有三个不同的文本值。“干”、“小雨”和“雨”。

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

作为一个侧面信息,weather变量将用于预测水系统的阻塞,所以我将在某种线性回归模型中使用这一点。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-06-03 18:33:29

我们可以转换成factor,然后胁迫到integer

代码语言:javascript
复制
as.integer(factor(df1$Weather, levels = c("Dry", "Drizzle", "Rain"))
票数 5
EN

Stack Overflow用户

发布于 2016-06-04 07:42:42

为了记录在案,这也将做好以下工作:

代码语言:javascript
复制
match(df1$Weather, c("Dry", "Drizzle", "Rain"))

这比@akrun的解决方案略快(反正已经非常快了):

代码语言:javascript
复制
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  
票数 3
EN

Stack Overflow用户

发布于 2016-06-03 18:54:45

您可以转换为有序因子并为其分配标签:

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37621243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档