我有一个看起来像这样的数据框
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 的比例。
提前致谢
使用
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