我有一个带有分类变量Weather的数据集。这个变量有三个不同的文本值。“干”、“小雨”和“雨”。
我想要创建另一个变量,我可以为这些变量分配数值。例如,Dry将为1,Drizzle将为2,Rain将为3。
作为一个侧面信息,weather变量将用于预测水系统的阻塞,所以我将在某种线性回归模型中使用这一点。
发布于 2016-06-03 18:33:29
我们可以转换成factor,然后胁迫到integer
as.integer(factor(df1$Weather, levels = c("Dry", "Drizzle", "Rain"))发布于 2016-06-04 07:42:42
为了记录在案,这也将做好以下工作:
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 发布于 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
https://stackoverflow.com/questions/37621243
复制相似问题