У меня есть набор данных, в котором я хочу создать столбчатую диаграмму путем группировки столбцов, но я хочу, чтобы счетчик каждой группы отражал уникальное значение столбца для этой группы.
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
для каждого соответствующего правила; В итоге я получаю барплот со счетом 54,54,6, когда на самом деле хочу, чтобы они были 9,9,3 (т.е. уникальное значение exposure.sum
для этого правила)
ggplot(DT[time<=tmin,]) +
geom_bar(aes(x=rule,y=exposure.sum),stat="identity")