在 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】:

我们可以unnestlist 列并在group_by 中使用它

library(dplyr)
library(tidyr)
df %>%
    unnest(everything()) %>%
    group_by(procedures) %>% 
    summarise(n = n())

【讨论】:

【参考方案2】:

我们可以将separate_rowscount 一起使用:

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 如何在列表视图中对列的值求和

在MS Access中对列标题进行分组

在 SQL 中对列中的序号进行编号

根据每个值对列的值进行分组[重复]

有没有办法根据小数位在python中对数组/列表的值进行动态分组?

如何在 Jaspersoft iReport Designer 中对列中的所有值求和?