在R中的不同色谱柱下,将一个总计分为小计

  • 本文关键字:一个 r dataframe
  • 更新时间 :
  • 英文 :


我有一个带有两个列GrpCHD

的dataframe
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

最新更新