我有表格中的数据:日期,键,值,n, 其中:
date
是变量键获得特定值的第一个日期和时间。key
是变量名称value
是一个值n
是后续出现的相同值的数量例如,如果a
在2017-01-01上从value
到8am
的{{1}}为20,并且在此时间段内有四次录制, 11am
的{{1}}值为4.数据高度聚合的原因是数据行数十亿。
这是一个小例子:
n
我的目标是使用不同的图表(时间序列)显示一段时间内的价值分布。
由于数据量巨大,我正在寻找一种有效的方法来取消分组这类数据(即复制值n次)或按原样显示数据。
答案 0 :(得分:0)
你可以这样做:
dat <- as.data.frame(dat)
dat$Date <- as.character(dat$Date)
dat$n <- as.numeric(dat$n)
dat$Value <- as.numeric(dat$Value)
ggplot(dat) +
geom_point(aes(x = Date, y = Value, color = Key, stroke = n)) +
expand_limits(y = 0)
答案 1 :(得分:0)
以下是使用dplyr链解组数据的方法。但正如你所看到的,罗马的评论非常相似。
r1 <- c("2017-01-01 08:00:00","a",20,5)
r2 <- c("2017-01-01 08:00:00","b",10,20)
r3 <- c("2017-01-01 14:00:00","a",35,4)
dat <- as.data.frame(rbind(r1,r2,r3),stringsAsFactors = F)
colnames(dat) <- c("Date","Key","Value","n")
library(dplyr)
dat %>% mutate(n = as.numeric(n)) %>%
do(.[rep(1:nrow(.), .$n),])