使用R创建表摘要
我有一个包含两列的数据集,如图所示。我要做的是绘制一个表摘要,其中行作为组(1-5、6-10、11-15、16-20),列作为是和否的百分比。没有代码,因为我不知道如何开始。但我有数据集使用R创建表摘要,r,summary,R,Summary,我有一个包含两列的数据集,如图所示。我要做的是绘制一个表摘要,其中行作为组(1-5、6-10、11-15、16-20),列作为是和否的百分比。没有代码,因为我不知道如何开始。但我有数据集 Col 1 Col 2 1 Yes 2 No 3 Yes 4 No 5 No 6 No 7 Yes 8 Yes 9 Yes 10 No 12 Yes 14
Col 1 Col 2
1 Yes
2 No
3 Yes
4 No
5 No
6 No
7 Yes
8 Yes
9 Yes
10 No
12 Yes
14 No
16 No
18 No
20 Yes
基本R解决方案可以解决
cut
和aggregate
f <- cut(dat$Col.1, c(1, 6, 11, 16, 21, Inf),
include.lowest = TRUE, right = FALSE)
agg <- aggregate(Col.2 ~ f, dat, table)
agg <- cbind(agg[1], agg[[2]])
agg[2:3] <- 100*agg[2:3]/rowSums(agg[2:3])
agg
# f No Yes
#1 [1,6) 60.00000 40.00000
#2 [6,11) 40.00000 60.00000
#3 [11,16) 50.00000 50.00000
#4 [16,21) 66.66667 33.33333
f1)仅使用底端注释中的R和DF:
nr <- nrow(DF)
group <- 5 * ceiling(DF$Col1 / 5)
100 * prop.table(xtabs(~ group + Col2, DF), 1)
2)或使用更高级的组标签,尝试使用此方法,以提供比其他方法更好的标签:
nr <- nrow(DF)
g <- 5 * ceiling(DF$Col1 / 5) # from above
labels <- unique(paste0(g-4, "-", g))
group <- factor(g, labels = labels)
tab <- 100 * prop.table(xtabs(~ group + Col2, DF), 1)
注
可复制形式的输入DF
:
Lines <- "Col1 Col2
1 Yes
2 No
3 Yes
4 No
5 No
6 No
7 Yes
8 Yes
9 Yes
10 No
12 Yes
14 No
16 No
18 No
20 Yes"
DF <- read.table(text = Lines, header = TRUE)
行我希望摘要的第一列为第1-5、6-10……组。。。。第二列为“是”,第三列为“否”。在“是”和“否”下,我要“是”和“否”的百分比。不是复制品。链接显示了一个不同的示例。
nr <- nrow(DF)
g <- 5 * ceiling(DF$Col1 / 5) # from above
labels <- unique(paste0(g-4, "-", g))
group <- factor(g, labels = labels)
tab <- 100 * prop.table(xtabs(~ group + Col2, DF), 1)
> tab
Col2
group No Yes
1-5 60.00000 40.00000
6-10 40.00000 60.00000
11-15 50.00000 50.00000
16-20 66.66667 33.33333
> # another layout
> ftable(tab, row.vars = 1:2)
group Col2
1-5 No 60.00000
Yes 40.00000
6-10 No 40.00000
Yes 60.00000
11-15 No 50.00000
Yes 50.00000
16-20 No 66.66667
Yes 33.33333
> plot(tab, col = c("pink", "lightgreen"))
Lines <- "Col1 Col2
1 Yes
2 No
3 Yes
4 No
5 No
6 No
7 Yes
8 Yes
9 Yes
10 No
12 Yes
14 No
16 No
18 No
20 Yes"
DF <- read.table(text = Lines, header = TRUE)