我想总结一下没有na的字符串。
它正在使用str_c,如下面的示例所示
码
df <- tibble(x = c("ISSUE-1", "ISSUE-2", "ISSUE-3", "ISSUE-4"), ID = c("ID-1", "ID-1", "ID-2", "ID-2")) %>%
group_by(ID) %>%
summarise(IDissue = str_c(x, collapse = "; "))输出
ID issueID
ID-1 ISSUE-1; ISSUE-2
ID-2 ISSUE-3; ISSUE-4但是,当列中有NA时,str_c将整个输出转换为NA,如文档:https://stringr.tidyverse.org/reference/str_c.html中所述。
和大多数其他R函数一样,缺少的值是“具有传染性的”:当一个缺失的值与另一个字符串组合时,结果总是会丢失的。使用str_replace_na()将NA转换为"NA“代码
df <- tibble(x = c("ISSUE-1", "ISSUE-2", "ISSUE-3", NA), ID = c("ID-1", "ID-1", "ID-2", "ID-2")) %>%
group_by(ID) %>%
summarise(IDissue = str_c(x, collapse = "; "))输出
ID IDissue
ID-1 ISSUE-1; ISSUE-2
ID-2 NA有什么方法可以作为输出吗?
ID IDissue
ID-1 ISSUE-1; ISSUE-2
ID-2 ISSUE-3发布于 2020-07-28 23:00:57
更容易在filter之前添加group_by
library(stringr)
library(dplyr)
tibble(x = c("ISSUE-1", "ISSUE-2", "ISSUE-3", NA),
ID = c("ID-1", "ID-1", "ID-2", "ID-2")) %>%
filter(!is.na(x)) %>%
group_by(ID) %>%
summarise(IDissue = str_c(x, collapse = "; "))发布于 2020-07-28 23:04:16
基于aggregate的R基选项
> aggregate(.~ID,df,function(x) paste0(na.omit(x),collapse = "; "))
ID x
1 ID-1 ISSUE-1; ISSUE-2
2 ID-2 ISSUE-3发布于 2020-07-28 23:12:26
您可以将粘贴或str_c与x!is.na(x)一起使用,而不是x;它可以工作。
library(dplyr)
df <- tibble(x = c("ISSUE-1", "ISSUE-2", "ISSUE-3", NA), ID = c("ID-1", "ID-1", "ID-
2", "ID-2")) %>%
group_by(ID) %>%
summarise(IDissue = paste(x[!is.na(x)], collapse = "; "))
dfhttps://stackoverflow.com/questions/63143953
复制相似问题