我的数据框有两列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?
中创建此数据框答案 0 :(得分:0)
您可以使用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