繁体   English   中英

R:使用重新编码 function 将字符变量中的空格替换为 NA 时出错

[英]R: Error using recode function to replace blanks with NA in character variable

我正在重新编码选择的字符变量,但在尝试用NA替换空格时不断收到错误消息:

df <- df %>% mutate_at(vars(c("gender_1", "gender_2", "a_gender")),
                       funs(recode(., "M" = "Male",
                                   "F" = "Female",
                                   "" = NA_character_)))
Error: attempt to use zero-length variable name

谁能发现我的错误? 我敢肯定这是非常明显的...

编辑:生成类似于我正在处理的数据集的代码:

gender_1 <- as.character(c('F', '', 'F', 'M'))
gender_2 <- as.character(c('', 'M', 'F', 'M'))
a_gender <- as.character(c('', '', 'F', ''))
df <- data.frame(gender_1, gender_2, a_gender)
gender_1 <- as.character(c('F', '', 'F', 'M'))
gender_2 <- as.character(c('', 'M', 'F', 'M'))
a_gender <- as.character(c('', '', 'F', ''))
df <- data.frame(gender_1, gender_2, a_gender)

library(tidyverse)

df %>% 
  mutate(across(where(is.character), ~na_if(.x, "")))
#>   gender_1 gender_2 a_gender
#> 1        F     <NA>     <NA>
#> 2     <NA>        M     <NA>
#> 3        F        F        F
#> 4        M        M     <NA>

代表 package (v2.0.1) 于 2021 年 11 月 24 日创建

或者

df %>%
  mutate(across(
    .cols = contains("gender"),
    .fns = ~ case_when(.x == "M" ~ "Male",
                       .x == "F" ~ "Female",
                       .x == "" ~ NA_character_)
  ))
#>   gender_1 gender_2 a_gender
#> 1   Female     <NA>     <NA>
#> 2     <NA>     Male     <NA>
#> 3   Female   Female   Female
#> 4     Male     Male     <NA>

暂无
暂无

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

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