R 如何';解组';预先分组的数据帧
我使用的是R中的“esoph”数据。这是一个数据框,包含88个年龄/酒精/烟草组合的记录。以下是其数据摘录: 我试图实现的是实际删除alcgp列,但保留NCASE和ncontrols列的数据。因此,对于每个具有相同年龄组(agegp)和烟草组(tobgp)但不同酒精组(alcgp)的条目,将病例和对照组的值相加并存储在一行中R 如何';解组';预先分组的数据帧,r,dataframe,dplyr,R,Dataframe,Dplyr,我使用的是R中的“esoph”数据。这是一个数据框,包含88个年龄/酒精/烟草组合的记录。以下是其数据摘录: 我试图实现的是实际删除alcgp列,但保留NCASE和ncontrols列的数据。因此,对于每个具有相同年龄组(agegp)和烟草组(tobgp)但不同酒精组(alcgp)的条目,将病例和对照组的值相加并存储在一行中 例如,第1、5、9、12行将被合并。这可以在data.table中高效地完成 esoph[,alcgp := NULL] # remove alcgp column 按
例如,第1、5、9、12行将被合并。这可以在data.table中高效地完成
esoph[,alcgp := NULL] # remove alcgp column
按agegp和topgp合并(求和)NCASE和NCONControl。如果你
esoph[, .(sum(ncases),sum(ncontrols)), .(agegp,topgp)]
澄清:
您应该首先将数据集转换为data.table
library(data.table)
setDT(esoph)
如果您提供可复制的示例,那就太好了,很难从屏幕截图中复制。这是
dplyr
中的一行代码。我强烈建议你去看看
库(dplyr)
esoph%>%
分组依据(年龄组、tobgp)%>%
总结(总案例数=总NCASE数),
总控制=总和(控制))
...
...
agegp tobgp总病例总对照
1 25-34 0-9g/天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/天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/天14 104
10 45-54 10-19 13 57
请不要将数据作为图像提供,而是作为可复制的R代码提供,例如通过dput
。另请参阅:我大体上同意,但在这种情况下,这些数据随R一起出现,因此我认为没有必要。