R替换变量值



我试图从carData包更改WVS数据集中的变量值,但我有一个错误:

Error in `$<-.data.frame`(`*tmp*`, religion, value = c(2L, 2L, 2L, 2L,  : 
replacement has 5383 rows, data has 5381
In addition: Warning message:
In `[<-.factor`(`*tmp*`, c("yes", "no"), value = c(2L, 2L, 2L, 2L,  :
invalid factor level, NA generated

宗教是一个可变因素,它仍然应该是一个因素。

这是我的代码

data(WVS) 
head(WVS)
WVS$religion[c("yes","no")] <- c("oui", "non")

您可以使用dplyr:

library(dplyr)
WVS  <- WVS %>% mutate(religion = if_else("yes","oui","non"))

如果你的变量可以有更多的选项,你不想搞砸,你可以使用case_when:

WVS  <- WVS %>%
mutate(religion = case_when(religion == "yes" ~ "oui",
religion == "no" ~ "non",
TRUE ~ religion))

编辑

您可以将recode与因子变量一起使用

WVS  <- WVS %>%
mutate(religion = recode(religion, 
yes = "oui",
no = "non"))

最新更新