中创建此数据框
我有一个带有两个列Grp
和CHD
Grp CHD
20-29 0
20-29 1
20-29 0
30-34 1
30-34 0
我想从下面生成一个新的数据帧
grp n ChDP CHDA Mean
20-29 10 1 2 0.1
30-35 15 2 13 0.133
其中
grp = grp
n = grp计数
chdp =总计(chd = 1)
组中的CHDA =总计(CHD = 0)
平均= CHDP/N
如何在r?
您可以使用aggregate
创建result
数据框架,然后使用tapply
创建其他列。
首先,数据集。
dat <- read.table(text = "
Grp CHD
20-29 0
20-29 1
20-29 0
30-34 1
30-34 0
", header = TRUE)
现在是代码。
result <- aggregate(CHD ~ Grp, dat, length)
result$CHDP <- tapply(dat$CHD, dat$Grp, FUN = function(x) sum(x == 1))
result$CHDA <- tapply(dat$CHD, dat$Grp, FUN = function(x) sum(x == 0))
result$Mean <- tapply(dat$CHD, dat$Grp, FUN = function(x) mean(x == 1))
result
# Grp CHD CHDP CHDA Mean
#1 20-29 3 1 2 0.3333333
#2 30-34 2 1 1 0.5000000