繁体   English   中英

带有 mutate 和 ifelse 的新列,但在 R 中保留 NA

[英]New column with mutate and ifelse but keep NAs in R

我有一个简单的问题,但这让我很难过。

我希望用 ifelse function 重新编码一个变量,但我想将 NA(在变量“party”中)保留为 NA。

这就是我正在做的事情。 我有一个带有投票选择的变量(“派对”),如果参与者选择一组特定的派对,我想重新编码一个新变量(“RRP”):

df<- df %>%
  mutate(RRP = if_else(party %in% c("4",#SPP/UDC
                                    "12",#Swiss Democrats
                                    "13",#FDU
                                    "14", #PSL
                                    "15"), 1, 0))

问题是在“party”变量中有 NA 的参与者现在被重新编码为 0,因为他们没有满足 ifelse 中的条件。

我也试过这个:

df<- df %>%
  mutate(RRP = if_else(party %in% c("4",#SPP/UDC
                                    "12",#Swiss Democrats
                                    "13",#FDU
                                    "14", #PSL
                                    "15"), 1, 0,  na.rm=TRUE))

但它只会产生一个错误。

你还有其他建议吗?

非常感谢!

%in%NA值返回FALSE而不是NA 因此,当在ifelse / if_else中使用它时,它会在其中执行FALSE条件。 我们可以在这里使用case_when

library(dplyr)

df %>%
  mutate(RRP = case_when(party %in% c(4, 12:15) ~ 1, 
                         is.na(party) ~ NA_real_, 
                          TRUE ~ 0))
#  party RRP
#1    13   1
#2    14   1
#3    15   1
#4    16   0
#5    17   0
#6    NA  NA

数据

df <- data.frame(party = c(13:17, NA))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM