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

。
我试图实现的是实际删除alcgp列,但将其数据保留在ncase和ncontrol列中。因此,对于具有相同年龄组(agegp)和烟草组(tobgp)但不同酒精组(alcgp)的每个条目,将病例和对照的值相加,并将它们存储在一行中。
例如,第1、5、9、12行将被合并。
发布于 2020-12-20 00:59:26
这是dplyr中的一行代码。强烈建议您看一看。
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发布于 2020-12-20 00:45:38
这可以在data.table中高效地完成
esoph[,alcgp := NULL] # remove alcgp column使用agegp和topgp合并(sum) ncase和ncontrol。如果你
esoph[, .(sum(ncases),sum(ncontrols)), .(agegp,topgp)]澄清:
应首先将数据集转换为data.table
library(data.table)
setDT(esoph)将是很好的,如果你提供可重现的例子,它很难从屏幕截图重现。
https://stackoverflow.com/questions/65372011
复制相似问题