使用 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"
使用 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"