假设我有以下
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
将 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