ggplot2 и cumsum()

у меня есть набор временных меток UNIX и URI, и я пытаюсь построить кумулятивный счетчик запросов для каждого URI. Мне удалось сделать это для одного URI за раз, используя фиктивный столбец:

x.df$count <- apply(x.df,1,function(row) 1) # Create a dummy column for cumsum
x.df <- x.df[order(x.df$time, decreasing=FALSE),] # Sort
ggplot(x.df, aes(x=time, y=cumsum(count))) + geom_line()

однако в моем случае это будет примерно 30 сюжетов.

ggplot2 позволяет построить несколько линий в один сюжет (я скопировал этот кусок кода здесь):

ggplot(data=test_data_long, aes(x=date, y=value, colour=variable)) +
    geom_line()

проблема в том, что, таким образом, cumsum() будет рассчитывать на на.

у кого-нибудь есть идея?

1 ответов


вот тестовые данные, которые использует plyr ' s transform сначала вычислить кумулятивную сумму, а затем применить эти данные для построения с помощью ggplot2:

set.seed(45)
DF <- data.frame(grp = factor(rep(1:5, each=10)), x=rep(1:10, 5))
DF <- transform(DF, y=runif(nrow(DF)))

# use plyr to calculate cumsum per group of x
require(plyr)
DF.t <- ddply(DF, .(grp), transform, cy = cumsum(y))

# plot
require(ggplot2)
ggplot(DF.t, aes(x=x, y=cy, colour=grp, group=grp)) + geom_line()

enter image description here