替换 R 中的值,“是”为 1,“否”为 0

soc*_*ley 9 r dataset

我正在使用 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)

希望这可以帮助


WeN*_*Ben 6

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)


soc*_*ley 4

当人们测试不同的模型时,这是一种相当常见的事情。例如,决策树可以很好地处理“是”和“否”。然而,某些回归模型需要 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)

和平!