【发布时间】:2018-11-28 05:03:11
【问题描述】:
我正在使用一个名为“rawData”的数据框,它有一个名为“Season”的列,其值范围为 1 到 4。 我正在尝试使用循环来执行单热编码,即创建 4 个名为“Season 1”、“Season 2”、“Season 3”、“Season 4”的新列,其中每列都有一个二进制指标值1/0 显示列名称中的季节是否针对每个数据点发生。到目前为止,我已经尝试过:
for (i in 1:4){
text<-paste("Season", toString(i), sep = " ")
if (rawData$season==i) {
rawData$text<-1
}
}
但是,我只是在我的数据框中获得了一个名为“文本”的附加列,所有值 =1。我理解为什么 R 会这样做,但我想不出另一种方法来让它做我想做的事。我尝试更改 if-then 语句以将 "rawData$text" 更改为 "rawData$paste("Season", toString(i), sep = " ")
【问题讨论】:
-
请添加一个可重现的示例以及预期的输出。
-
你不需要一个for循环来做一个热编码,请给我们提供可重复的例子。
标签: r one-hot-encoding