R 如何使工厂财政季度表现得像日期
我正在整合一些函数来帮助总结财政季度的时态数据。我拥有的函数将获取一个日期,例如R 如何使工厂财政季度表现得像日期,r,R,我正在整合一些函数来帮助总结财政季度的时态数据。我拥有的函数将获取一个日期,例如2017-01-01,并吐出相应的带因数字符值,例如“1Q2017”。我正在使用我的数据在ggplot中创建图形。但是由于我考虑了四分之一,我不能像日期那样使用geom_line()这样的属性来连接我的数据点 我可以为显示为季度但行为类似于日期的季度创建数据类型吗?我将如何做到这一点?从@Jaap获取评论,并结合示例图: library(ggplot2) library(zoo) df <- data.fra
2017-01-01
,并吐出相应的带因数字符值,例如“1Q2017”
。我正在使用我的数据在ggplot中创建图形。但是由于我考虑了四分之一,我不能像日期那样使用geom_line()
这样的属性来连接我的数据点
我可以为显示为季度但行为类似于日期的季度创建数据类型吗?我将如何做到这一点?从@Jaap获取评论,并结合示例图:
library(ggplot2)
library(zoo)
df <- data.frame(date1 = c("2017-01-01", "2016-10-01", "2016-07-01"),
v1 = c(2, 4, 3))
df$date1 <- as.Date(df$date1)
ggplot(df, aes(x = date1, y = v1)) +
geom_line() +
scale_x_date(name = "quarters",
date_labels = as.yearqtr)
库(ggplot2)
图书馆(动物园)
df您只需要在aes
中指定group=1
library(tidyverse) # install.packages('tidyverse') if needed
dat = data_frame(date = seq.Date(as.Date('2017-01-01'),
as.Date('2017-12-31'),
length.out=365),
x = rnorm(365))
dat = mutate(dat, qtr = paste0(lubridate::quarter(date), 'Q', lubridate::year(date)))
dat$qtr = as.factor(dat$qtr) # for similarity to your situation
dat %>%
group_by(qtr) %>%
summarise(n = sum(x)) %>%
ggplot(aes(x=qtr, y=n, group=1)) +
geom_line()
zoo中的“yearqtr”
类表示年/季度,但其行为有点像日期,因为在内部,此类对象以数字形式表示为year+frac,其中frac为0、1/4、2/4、3/4,可以对其执行算术运算,并将其格式化为有意义的年/季度字符串,并使用ggplot2中的行(以及经典图形和晶格图形)。请参见?yearqtr
和?scale_x_yearqtr
library(ggplot2)
library(zoo)
# test data
dates <- c("2017-01-01", "2017-04-01")
values <- 1:2
z <- zoo(values, as.yearqtr(dates)) # test zoo object
# 1. classic graphics
plot(z, axat = "n")
axis(1, at = time(z), labels = format(time(z), "%YQ%q"))
# 2. ggplot2 graphics
autoplot(z) + scale_x_yearqtr()
# 3. ggplot2 graphics using data frame with yearqtr
DF <- fortify.zoo(z) # test data frame
sapply(DF, class)
## Index z
## "yearqtr" "integer"
ggplot(DF, aes(Index, z)) + geom_line() + scale_x_yearqtr()
库(ggplot2)
图书馆(动物园)
#测试数据
日期见