将每个季度的最后一天的季度日期列转换为每个季度的第一天,反之亦然

问题描述 投票:0回答:1

假设我有以下

df1
df2
,我如何使用R将每个季度的最后一天转换为
date
列中每个季度的第一天,反之亦然?谢谢。

df1:

df1 <- structure(list(date = c("2010-3-31", "2010-6-30", "2010-9-30", 
"2010-12-31", "2011-3-31", "2011-6-30", "2011-9-30", "2011-12-31"
), value = c(24.1, 16.4, 18.5, 8.61, 12.6, 20.1, 17.9, 14.5)), class = "data.frame", row.names = c(NA, 
-8L))

出局:

        date value
1  2010-3-31 24.10
2  2010-6-30 16.40
3  2010-9-30 18.50
4 2010-12-31  8.61
5  2011-3-31 12.60
6  2011-6-30 20.10
7  2011-9-30 17.90
8 2011-12-31 14.50

df2:

df2 <- structure(list(date = c("2010-1-1", "2010-4-1", "2010-7-1", "2010-10-1", 
"2011-1-1", "2011-4-1", "2011-7-1", "2011-10-1"), value = c(24.1, 
16.4, 18.5, 8.61, 12.6, 20.1, 17.9, 14.5)), class = "data.frame", row.names = c(NA, 
-8L))

出局:

      date value
1  2010-1-1 24.10
2  2010-4-1 16.40
3  2010-7-1 18.50
4 2010-10-1  8.61
5  2011-1-1 12.60
6  2011-4-1 20.10
7  2011-7-1 17.90
8 2011-10-1 14.50
r dplyr tidyverse zoo
1个回答
1
投票

将 yearqtr 对象转换为 Date 类将给出本季度的第一个 so

library(dplyr)
library(zoo)

df1 %>%
  mutate(date = as.Date(as.yearqtr(as.Date(date))))

给予:

        date value
1 2010-01-01 24.10
2 2010-04-01 16.40
3 2010-07-01 18.50
4 2010-10-01  8.61
5 2011-01-01 12.60
6 2011-04-01 20.10
7 2011-07-01 17.90
8 2011-10-01 14.50
© www.soinside.com 2019 - 2024. All rights reserved.