【发布时间】:2017-12-15 16:09:29
【问题描述】:
我有一个来自多个实验的数据框。我希望计算每次连续实验后获得的唯一值的累积数量。
例如,考虑:
test <- data.frame(exp = c( rep("exp1" , 4) , rep("exp2" , 4), rep("exp3" , 4) , rep("exp4" , 5) ) ,
entries = c("abcd","efgh","ijkl","mnop", "qrst" , "uvwx" , "abcd","efgh","ijkl" , "qrst" , "uvwx",
"yzab" , "yzab" , "cdef" , "mnop" , "uvwx" , "ghij"))
> test
exp entries
1 exp1 abcd
2 exp1 efgh
3 exp1 ijkl
4 exp1 mnop
5 exp2 qrst
6 exp2 uvwx
7 exp2 abcd
8 exp2 efgh
9 exp3 ijkl
10 exp3 qrst
11 exp3 uvwx
12 exp3 yzab
13 exp4 yzab
14 exp4 cdef
15 exp4 mnop
16 exp4 uvwx
17 exp4 ghij
唯一条目的总数为九。现在我希望结果看起来像:
exp cum_unique_entries
1 exp1 4
2 exp2 6
3 exp3 7
4 exp4 9
最后我想以条形图的形式绘制它。 我可以使用 for 循环方法来做到这一点,但感觉必须有更优雅的方式。
【问题讨论】:
-
Exp1 有 4 个唯一条目,然后添加 exp2 总共有 6 个唯一条目,...
-
与data.table...
library(data.table); setDT(test); unique(test, by="entries")[, .N, by=exp][, cn := cumsum(N)][]