R 把约会分成四分之一

R 把约会分成四分之一,r,R,我目前正忙于构建一个R脚本来格式化一些数据以供以后使用。我想把日期分为四分之一,并编写了下面的函数 dates_to_quarters <- function(x){ x <- as.numeric(month(x)) x[x > 0 & x < 4 & is.na(x) == FALSE] <- "Q1" x[x >= 4 & x < 7 & is.na(x) == FALSE] <-

我目前正忙于构建一个R脚本来格式化一些数据以供以后使用。我想把日期分为四分之一,并编写了下面的函数

dates_to_quarters <- function(x){
    x <- as.numeric(month(x))

    x[x > 0 & x < 4 & is.na(x) == FALSE] <- "Q1"
    x[x >= 4  & x < 7 & is.na(x) == FALSE] <- "Q2"
    x[x >= 7 & x < 10 & is.na(x) == FALSE] <- "Q3"
    x[x >= 10 & x < 13 & is.na(x) == FALSE] <- "Q4"

    return(x)
}
预期产出:

Q1
Q2
Q3
Q4
这就是我得到的:

Q1
Q2
9
Q4
1 yearqtr将字符日期转换为yearqtr类,然后使用%q格式说明符对其进行格式设置:

x <- c("20-01-2017", "20-04-2017", "20-09-2017", "20-12-2017") # input

library(zoo)

format(as.yearqtr(x, "%d-%m-%Y"), "Q%q")
## [1] "Q1" "Q2" "Q3" "Q4"

更新:修改输入x以对应相关更改。

请提供一个小数据集,我们可以在其上运行您的函数。你也可以使用cut函数。你能发布一些你得到的和你期望得到的样本输入和输出吗?请按照@Marwaha提供的链接,以易于粘贴的形式提供数据。我提供了一些示例数据
x <- c("20-01-2017", "20-04-2017", "20-09-2017", "20-12-2017") # input

library(zoo)

format(as.yearqtr(x, "%d-%m-%Y"), "Q%q")
## [1] "Q1" "Q2" "Q3" "Q4"
quarters(as.Date(x, "%d-%m-%Y"))
## [1] "Q1" "Q2" "Q3" "Q4"