首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对预先分组的数据帧进行“解组”

如何对预先分组的数据帧进行“解组”
EN

Stack Overflow用户
提问于 2020-12-20 00:33:13
回答 2查看 49关注 0票数 0

我使用的是R中的“esoph”数据,它是一个包含88个年龄/酒精/烟草组合记录的数据框架。以下是它的数据摘录:

我试图实现的是实际删除alcgp列,但将其数据保留在ncase和ncontrol列中。因此,对于具有相同年龄组(agegp)和烟草组(tobgp)但不同酒精组(alcgp)的每个条目,将病例和对照的值相加,并将它们存储在一行中。

例如,第1、5、9、12行将被合并。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-20 00:59:26

这是dplyr中的一行代码。强烈建议您看一看。

代码语言:javascript
复制
library(dplyr)
esoph %>% 
    group_by(agegp, tobgp) %>% 
    summarize(total_cases=sum(ncases), 
              total_controls = sum(controls))
...
...
   agegp tobgp    total_cases total_controls
 1 25-34 0-9g/day           0             70
 2 25-34 10-19              1             19
 3 25-34 20-29              0             11
 4 25-34 30+                0             16
 5 35-44 0-9g/day           2            109
 6 35-44 10-19              4             46
 7 35-44 20-29              3             27
 8 35-44 30+                0             17
 9 45-54 0-9g/day          14            104
10 45-54 10-19             13             57
票数 1
EN

Stack Overflow用户

发布于 2020-12-20 00:45:38

这可以在data.table中高效地完成

代码语言:javascript
复制
esoph[,alcgp := NULL] # remove alcgp column

使用agegp和topgp合并(sum) ncase和ncontrol。如果你

代码语言:javascript
复制
esoph[, .(sum(ncases),sum(ncontrols)), .(agegp,topgp)]

澄清:

应首先将数据集转换为data.table

代码语言:javascript
复制
library(data.table)
setDT(esoph)

将是很好的,如果你提供可重现的例子,它很难从屏幕截图重现。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65372011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档