如何在r中显示分组值?

时间:2017-01-05 08:26:46

标签: r ggplot2

我有表格中的数据:日期,键,值,n, 其中:

  • date是变量键获得特定值的第一个日期和时间。
  • key是变量名称
  • value是一个值
  • n是后续出现的相同值的数量

例如,如果a在2017-01-01上从value8am的{​​{1}}为20,并且在此时间段内有四次录制, 11am的{​​{1}}值为4.数据高度聚合的原因是数据行数十亿。

这是一个小例子:

n

我的目标是使用不同的图表(时间序列)显示一段时间内的价值分布。

由于数据量巨大,我正在寻找一种有效的方法来取消分组这类数据(即复制值n次)或按原样显示数据。

2 个答案:

答案 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)

enter image description here

答案 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),])