R 创建具有多个级别的汇总表
我有一个数据,分为高级类别和低级类别。数据的基本结构类似于此模拟数据:R 创建具有多个级别的汇总表,r,dplyr,tabular,R,Dplyr,Tabular,我有一个数据,分为高级类别和低级类别。数据的基本结构类似于此模拟数据: set.seed(21) cat <- data.frame(Level1=c(rep("A",6),rep("B",6),rep("C",6)), Level2=c(sample(c(1:3), 6, replace=TRUE), sample(c(4:6), 6, replace=TRUE),
set.seed(21)
cat <- data.frame(Level1=c(rep("A",6),rep("B",6),rep("C",6)),
Level2=c(sample(c(1:3), 6, replace=TRUE),
sample(c(4:6), 6, replace=TRUE),
sample(c(7:9), 6, replace=TRUE)),
Type=rep(c(1,2),9),
Value=rnorm(18))
> table(cat$Level1,cat$Level2)
# 1 2 3 4 5 6 7 8 9
#A 1 3 2 0 0 0 0 0 0
#B 0 0 0 1 1 4 0 0 0
#C 0 0 0 0 0 0 1 4 1
我尝试了tables包中的tablar,它可以根据更高级别的分组很好地创建一个包含n、mean、sd等的表。我也尝试过使用不同的分组方式来进行总结,但在同一个表中使用两种分组方式都无法实现任何效果
我在想,也许有一种方法可以在循环过程中一行一行或一块一块地完成,但我不能完全想象这将如何工作
有人见过这样的东西吗 进行两次汇总统计,并将结果添加到一个表中。例如,使用data.table
进行两次汇总统计,并将结果添加到一个表中。例如,使用data.table
您是否尝试过:
set.seed(21)
cat <- data.table(Level1=c(rep("A",6),rep("B",6),rep("C",6)),
Level2=c(sample(c(1:3), 6, replace=TRUE),
sample(c(4:6), 6, replace=TRUE),
sample(c(7:9), 6, replace=TRUE)),
Type=rep(c(1,2),9),
Value=rnorm(18))
aggregate(Value~Level1+Level2, data=cat, FUN=mean)
您是否尝试过:
set.seed(21)
cat <- data.table(Level1=c(rep("A",6),rep("B",6),rep("C",6)),
Level2=c(sample(c(1:3), 6, replace=TRUE),
sample(c(4:6), 6, replace=TRUE),
sample(c(7:9), 6, replace=TRUE)),
Type=rep(c(1,2),9),
Value=rnorm(18))
aggregate(Value~Level1+Level2, data=cat, FUN=mean)
这不是期望的输出,不是吗?这不是期望的输出,不是吗?这是一个完美的解决方案。谢谢你的快速回复!这是一个完美的解决方案。谢谢你的快速回复!
> tab
Level1 Level2 Count Mean SD
1: A NA 6 -0.2224609 1.1052424
2: A 1 2 -1.4125934 1.2221462
3: A 3 4 0.3726054 0.3487678
4: B NA 6 0.4125892 0.8841718
5: B 4 2 1.0854216 0.6030156
6: B 6 4 0.0761730 0.8538268
7: C NA 6 -0.2347908 0.7815174
8: C 7 4 -0.2805626 0.6948971
9: C 8 2 -0.1432472 1.2570046
set.seed(21)
cat <- data.table(Level1=c(rep("A",6),rep("B",6),rep("C",6)),
Level2=c(sample(c(1:3), 6, replace=TRUE),
sample(c(4:6), 6, replace=TRUE),
sample(c(7:9), 6, replace=TRUE)),
Type=rep(c(1,2),9),
Value=rnorm(18))
aggregate(Value~Level1+Level2, data=cat, FUN=mean)
Level1 Level2 Value
1 A 1 -1.4125934
2 A 3 0.3726054
3 B 4 1.0854216
4 B 6 0.0761730
5 C 7 -0.2805626
6 C 8 -0.1432472