假设我有一些简单的数据,如下所示:
ID value character
001 A JABA
002 B FABA
001 B RABA
003 D RIBI
003 TT LENI
004 A LENT
001 A TATA
004 N YAYA
004 N YANA我想要做的(使用tidyverse/dplyr)是在整个表中创建这些ID及其值的汇总表。如果用户有一个值的副本,则应该只显示一次。
预期输出
ID values
001 [A,B]
002 [B]
003 [D,TT]
004 [A,N]不过分依附于格式,但您有如下想法:)
发布于 2022-07-02 02:00:02
library(dplyr)
df %>%
group_by(ID) %>%
distinct(value) %>%
summarize(val = paste(value, collapse = ", "))
# A tibble: 4 × 2
ID val
<int> <chr>
1 1 A, B
2 2 B
3 3 D, TT
4 4 A, N 发布于 2022-07-02 09:57:43
如果不需要串接字符串,而需要唯一值的向量
tibble(
id=c(1,1,1,2),
value=letters[c(1,1,2,3)]) %>%
print() %>%
# A tibble: 4 x 2
# id value
# <dbl> <chr>
# 1 1 a
# 2 1 a
# 3 1 b
# 4 2 c
group_by(id) %>%
summarise(across(everything(), ~list(unique(.)))) %>%
print() %>%
# A tibble: 2 x 2
# id value
# <dbl> <list>
# 1 1 <chr [2]>
# 2 2 <chr [1]>
deframe()
# $`1`
# [1] "a" "b"
#
# $`2`
# [1] "c"https://stackoverflow.com/questions/72835917
复制相似问题