Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何使工厂财政季度表现得像日期_R - Fatal编程技术网

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)
图书馆(动物园)
#测试数据
日期见