gpt4 book ai didi

r - ggplot 使用分组日期变量(例如 year_month)

转载 作者:行者123 更新时间:2023-12-04 17:31:02 24 4
gpt4 key购买 nike

我觉得这对 ggplot 来说应该是一件容易的事, tidyverse , lubridate ,但我似乎找不到优雅的解决方案。

目标:创建按年份和月份聚合/汇总/分组的我的数据的条形图。

#Libraries
library(tidyverse)
library(lubridate)

# Data
date <- sample(seq(as_date('2013-06-01'), as_date('2014-5-31'), by="day"), 10000, replace = TRUE)
value <- rnorm(10000)
df <- tibble(date, value)

# Summarise
df2 <- df %>%
mutate(year = year(date), month = month(date)) %>%
unite(year_month,year,month) %>%
group_by(year_month) %>%
summarise(avg = mean(value),
cnt = n())
# Plot
ggplot(df2) +
geom_bar(aes(x=year_month, y = avg), stat = 'identity')

当我创建 year_month 变量时,它自然会变成字符变量而不是日期变量。我也试过按 year(date), month(date) 分组但后来我不知道如何在 ggplot 中使用两个变量作为 x 轴.也许这可以通过将日期设置为每月的第一天来解决......?

最佳答案

你真的很亲近。缺件是floor_date()scale_x_date() :

library(tidyverse)
library(lubridate)

date <- sample(seq(as_date('2013-06-01'), as_date('2014-5-31'), by = "day"),
10000, replace = TRUE)
value <- rnorm(10000)

df <- tibble(date, value) %>%
group_by(month = floor_date(date, unit = "month")) %>%
summarize(avg = mean(value))

ggplot(df, aes(x = month, y = avg)) +
geom_bar(stat = "identity") +
scale_x_date(NULL, date_labels = "%b %y", breaks = "month")

enter image description here

关于r - ggplot 使用分组日期变量(例如 year_month),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47503159/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com