0

尝试使用来自 dplyr 的 unite 组合多个字符列时,该na.rm = TRUE选项不会删除 NA。

一步步:

  1. 原始数据集有 5 列word1:word5 原始数据的图像
  2. 希望word1:word5使用代码合并在一个列中:
    data_unite_5 <-  data_original_5 %>%
        unite("pentawords", word1:word5, sep=" ", na.rm=TRUE, remove=FALSE)
  1. 我试过使用mutate_if(is.factor, as.character),但没有奏效。

任何建议,将不胜感激。

4

1 回答 1

0

你误解了这个na.rm论点是如何起作用的unite。在 tidyverse 页面上的示例之后zuniteofxy

na.rm = FALSE

#>   z     x     y    
#>   <chr> <chr> <chr>
#> 1 a_b   a     b    
#> 2 a_NA  a     NA   
#> 3 NA_b  NA    b    
#> 4 NA_NA NA    NA   

na.rm = TRUE

#>   z     x     y    
#>   <chr> <chr> <chr>
#> 1 "a_b" a     b    
#> 2 "a"   a     NA   
#> 3 "b"   NA    b    
#> 4 ""    NA    NA  

因此na.rm确定NA值如​​何出现在组装字符串 ( pentrawords) 中,它不会从数据中删除行。

如果您想删除数据集的第四行,我建议您使用filter.

data_unite_5 <- data_original_5 %>%
  unite("pentawords", word1:word5, sep =" " , na.rm = TRUE, remove = FALSE) %>%
  filter(pentawords != "")

这将从您的输出中排除所有空字符串。

于 2020-09-09T20:50:42.807 回答