【发布时间】:2020-01-24 00:02:31
【问题描述】:
我有一个数据集,我想通过对列进行分组来创建条形图,但我希望每个组的计数能够反映该组的唯一列值。
DT <- data.table(id=c(1,1,1,1,2,2,2,3,3,3,4,4,4,5,5),
time=c(0,1,2,3,0,1,2,0,1,2,0,1,2,0,1),
exposure=c(1,2,0,3,2,3,1,0,3,3,0,0,3,3,0),
tmin=c(rep(2,15)),
rule=c(rep("a",7),rep("b",6),rep("c",2)))
tmin <- 2
DT[time<=tmin,exposure.sum:=sum(exposure),by=rule]
我想对 rule 列进行分组,并让规则 a、b、c 的计数分别为 9、9、3。如exposure.sum 列中所示
> DT[time<=tmin,]
id time exposure tmin rule exposure.sum
1: 1 0 1 2 a 9
2: 1 1 2 2 a 9
3: 1 2 0 2 a 9
4: 2 0 2 2 a 9
5: 2 1 3 2 a 9
6: 2 2 1 2 a 9
7: 3 0 0 2 b 9
8: 3 1 3 2 b 9
9: 3 2 3 2 b 9
10: 4 0 0 2 b 9
11: 4 1 0 2 b 9
12: 4 2 3 2 b 9
13: 5 0 3 2 c 3
14: 5 1 0 2 c 3
现在,我创建了一个简单的条形图,但每个规则的计数结果是每个规则的 exposure.sum 的总和;当我实际上希望它们为 9,9,3(即该规则的 exposure.sum 的唯一值)时,我最终得到了一个计数为 54,54,6 的条形图
ggplot(DT[time<=tmin,]) +
geom_bar(aes(x=rule,y=exposure.sum),stat="identity")
【问题讨论】: