我想绘制因子OK
(*)的级别X
(*)随时间(列Date
)的累积计数。我不确定最好的策略是什么,是否应该用摘要列创建一个新的数据框,或者是否有ggplot2的方式来做到这一点。
样本数据
DF <- data.frame(
Date = as.Date(c("2018-01-01", "2018-01-01", "2018-02-01", "2018-03-01", "2018-03-01", "2018-04-01") ),
X = factor(rep("OK", 6), levels = c("OK", "NOK")),
Group = factor(c(rep("A", 4), "B", "B"))
)
DF <- rbind(DF, list(as.Date("2018-02-01"), factor("NOK"), "A"))
基于类似的问题,我尝试了以下方法:
ggplot(DF, aes(Date, col = Group)) + geom_line(stat='bin')
使用stat='count'
(作为对this question的回答)更加糟糕:
ggplot(DF, aes(Date, col = Group)) + geom_line(stat='count')
显示因子水平(*)的计数,但不显示随时间的累积。
绝望的测量-用table
我尝试使用table
创建一个具有计数的新数据框,如下所示:
cum <- as.data.frame(table(DF$Date, DF$Group))
ggplot(cum, aes(Var1, cumsum(Freq), col = Var2, group = Var2)) +
geom_line()
是否可以用ggplot2做到这一点?我是否需要使用cumsum
创建一个新列?如果是这样,我该如何按日期cumsum
DF[X == "OK"]
?
(*)观察员:我可以过滤数据框以仅使用click
使用预期的级别,但是我敢肯定有人会找到更聪明的解决方案。