我正在使用 R 库中可用的 weatherAUS 数据集。我正在尝试将 RainTomorrow 列中的“是”替换为 1,将“否”替换为 0。
我写了这个,但它似乎不起作用:
weather4$RainTomorrow[weather4$RainTomorrow=="Yes"]<-1
Run Code Online (Sandbox Code Playgroud)
我只是说:
警告信息:在
[<-.factor(*tmp*, weather4$RainTomorrow == "Yes", value = c(NA, : invalid factor level, NA生成
这是什么意思,我应该怎么做?我认为我应该在某处使用 as.numeric 或 as.factor ,但我不知道究竟如何。
Nic*_*ier 14
您可以使用 dplyr 轻松完成此操作。
require(dplyr)
weather4 <- weather4 %>%
mutate(RainToday = ifelse(RainToday == "No",0,1))
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助
library(data.table)
weather4[,":="(RainTomorrow=ifelse(RainTomorrow=="no",0,1))]
Run Code Online (Sandbox Code Playgroud)
或者简单地使用:
as.numeric(as.factor(weather4$RainTomorrow))
Run Code Online (Sandbox Code Playgroud)
当人们测试不同的模型时,这是一种相当常见的事情。例如,决策树可以很好地处理“是”和“否”。然而,某些回归模型需要 1 和 0。特别是 Logistic 回归。
我通过使用 plyr 库解决了这个问题。非常简单方便。这是我的解决方案。
解决方案的起源在这里。
library(plyr)
weather5$RainToday <- revalue(weather5$RainToday, c("Yes"=1))
weather5$RainToday <- revalue(weather5$RainToday, c("No"=0))
head(weather5$RainToday)
[1] 0 1 1 1 1 0
Levels: 0 1
Run Code Online (Sandbox Code Playgroud)
和平!