使用 dplyr、group_by 和折叠或汇总连接字符串/行,但保持 NA 值

Concatenating strings / rows using dplyr, group_by & collapse or summarize, but maintain NA values

使用 dplyr 连接字符串时,group_by & 折叠或汇总,NA 个值变成一个字符串 "NA"。如何避免?

请参阅下面的示例:

ID <- c(1,1,2,3)
string <- c(' asfdas ', 'sdf', NA, 'NA')
df <- data.frame(ID, string)

两者都有,

df_conca <-df%>%
 group_by(ID)%>%
 summarize(string = paste(string, collapse = "; "))%>%
 distinct_all()

df_conca <-df%>%
 group_by(ID)%>%
 dplyr::mutate(string = paste(string, collapse = "; "))%>%
 distinct_all()

结果:

     ID string               
1     1 " asfdas ; sdf"
2     2 "NA"           
3     3 "NA" 

,但我想保留 NA 值:

     ID string             
1     1 " asfdas ; sdf"
2     2 NA           
3     3 "NA" 

理想情况下,我想留在 dplyr 工作流程中。

我们可以使用 stringr 包中的 str_c

library(dplyr)
library(stringr)

df %>%
  group_by(ID)%>%
  summarize(string = str_c(string, collapse = "; "))

#     ID string         
#  <dbl> <chr>          
#1     1 " asfdas ; sdf"
#2     2  NA            
#3     3 "NA"