在 R 中对列表中的唯一值进行分组的方法?
Posted
技术标签:
【中文标题】在 R 中对列表中的唯一值进行分组的方法?【英文标题】:Method for grouping in R for unique values in a list? 【发布时间】:2021-12-08 13:36:05 【问题描述】:我有一个数据框,其中包含接受过一种或多种外科手术的患者,并且有兴趣按手术类型对他们进行分组以分析结果。这些过程由数字 (1-5) 表示。为了避免必须在数据框中为每种程序类型创建一个新列来确定患者是否执行了该独特程序,我基本上是在寻找一种方法来对列表中的每个唯一值进行聚合分组和汇总。
一个有代表性的 df 应该是这样的......
id <- c(1,2,3,4,5,6,7,8,9,10)
procedures <- list(2, 3, c(1,5), 1, c(3,4), c(1,3), 5, 2, c(1,2,5), 4)
df <- as.data.frame(cbind(id, procedures))
假设我想计算接受每种手术的患者人数。以下显然会将每个唯一列表计为一个单独的对象。
df %>%
group_by(procedures) %>%
summarise(n = n())
我想要完成的是每个唯一过程出现在列表列表中的次数。以下内容过于简单,但只是一个示例。
df %>%
group_by(unique(procedures)) %>%
summarise(n = n())
【问题讨论】:
【参考方案1】:我们可以unnest
list
列并在group_by
中使用它
library(dplyr)
library(tidyr)
df %>%
unnest(everything()) %>%
group_by(procedures) %>%
summarise(n = n())
【讨论】:
【参考方案2】:我们可以将separate_rows
与count
一起使用:
library(dplyr)
library(tidyr)
df %>%
separate_rows("procedures", sep = " ,") %>%
count(procedures)
procedures n
<dbl> <int>
1 1 4
2 2 3
3 3 3
4 4 2
5 5 3
【讨论】:
以上是关于在 R 中对列表中的唯一值进行分组的方法?的主要内容,如果未能解决你的问题,请参考以下文章
SonataAdminBundle 如何在列表视图中对列的值求和