r - 对数据集进行子集化和汇总,以准备堆叠面积图的可视化

标签 r ggplot2 aggregate

我有一个包含 800k 行的数据集,每行都有一个时间戳。数据涵盖一年的时间范围。

在准备我想要生成的堆积面积图时,我想创建 26 个子组(例如两周间隔)。在这些子组中,我想找到 5 个类别内值的频率。

举个例子:在前两周,> x && <= y 的值百分比是多少,> y && <= z 的值有多少,等等

所有这些都应该导致由 ggplot2 库及其 geom_area() 函数创建的堆叠面积图。

这是数据集的头部:

     date transaction_volume transaction_costs

47 2015-01-01           3.985826           0.03157
59 2015-01-01           3.955749           0.03157
71 2015-01-01           0.315700           0.03157
72 2015-01-01           0.315700           0.03157
73 2015-01-01           0.315700           0.03157
74 2015-01-01           0.315700           0.03157

最佳答案

这是一个包含一些虚拟数据的示例:

library(dplyr)
library(ggplot2)

n <- 1000
d <- data.frame(date=as.Date('2010/01/01') + sort(sample(0:364, n, replace=TRUE)))
d$x <- runif(n)

# These are the breaks defining your bins of data    
breaks <- c(0, 0.2, 0.4, 0.6, 0.8, 1)

d %>% 
  # create fortnight indicator from Julian day number
  mutate(Fortnight=ceiling(as.numeric(format(date, '%j'))/14)) %>%
  # bin data
  mutate(Class=factor(findInterval(x, breaks))) %>%
  group_by(Fortnight, Class) %>%
  # count per group
  summarise(n=n()) %>%
  # expressed as proportions
  mutate(Proportion=n/sum(n)) %>%
  ggplot(aes(x=Fortnight, y=Proportion, fill=Class)) + 
    geom_area()

enter image description here

如果您想稍微清理一下,请过滤掉第 27 周。例如。插入filter(Fortnight < 27) %>%之前ggplot打电话。

关于r - 对数据集进行子集化和汇总,以准备堆叠面积图的可视化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34689687/

相关文章:

r - 为什么我在 ggarrange 中共享的图例周围有一个轻微的黑色边框

r - ggplot中具有最小值和最大值的连续色标

python - Pandas:通过数据框聚合数据

r - 神经网络时间序列预测 tsDyn nnetTS

r - 如何使用r中的for循环使用先前的观察来预测下一个时期?

r - 向量的动态矩阵

sql - 按连续日期对记录进行分组

r - 如何在R中通过GGally保存对象

r - 在 fiddle 图的填充条件下将散点与线配对

r - 按R中的子组百分比汇总