根据条件聚合统计数据表列

问题描述 投票:0回答:1

我有一个看起来像这样的数据框

structure(list(treaty = c("abc", "de", "abc", "de", "de"), SEX1 = c("M", 
"F", "F", "M", "F"), age = c(20, 30, 40, 50, 70)), class = "data.frame", row.names = c(NA, 
-5L))

我将其转换为数据表,因为它的大小很大,并对其进行操作。我希望能够聚合和计算以在数据表上获得以下输出

输出:

条约 道具(M) 支柱 (F) 平均年龄
abc 1/2 1/2 30
1/3 2/3 50

基本上 1. 按条约 ID 分组 2. 根据数据表和平均年龄的每个条约总数显示 M 和 F 的比例。

提前致谢

r datatable
1个回答
0
投票

使用

data.table
你可以:

dt[, .(propM = mean(SEX1 == "M"), 
       propF = mean(SEX1 == "F"), 
       AveAge = mean(age)),
   .(treaty)]

输出

   treaty     propM     propF AveAge
1:    abc 0.5000000 0.5000000     30
2:     de 0.3333333 0.6666667     50

或者使用

dplyr
您可以简单地
summarize
所有这些操作通过
age
:

df %>%
  summarize(propM = mean(SEX1 == "M"),
            propM = mean(SEX1 == "F"),
            AveAge = mean(age),
            .by = treaty)

输出:

  treaty     propM     propF AveAge
1    abc 0.5000000 0.5000000     30
2     de 0.3333333 0.6666667     50
© www.soinside.com 2019 - 2024. All rights reserved.