从给定的数据帧中,我try 提取quarterly_values
,但是当我try 每三个月改变一次值时,它失败了.
mont_dates <- c("201401", "201402", "201403", "201404", "201405",
"201406", "201407", "201408", "201409", "201410", "201411", "201412")
cat <- c("new", "old", "undefined", "new", "old", "undefined",
"undefined", "new", "old", "undefined", "new", "old")
mont_vals <- c(221, 433, 878, 455, 998, 797, 77, 3435, 868, 686, 868, 434)
ID <- c(1,2,3,4,5,6,7,8,9,10,11,12)
df <- data.frame(mont_dates, mont_vals, cat, ID)
函数来提取月值并计算季值
Monthly_Qrt_vals <- function(df1) {
df1 %>%
mutate(mont_dates = ymd(paste0(mont_dates, "01")),
quarter = paste0(year(mont_dates), " Q", quarter(mont_dates))) %>%
arrange(mont_dates) %>%
mutate(quarterly_values = mont_vals[c(1,seq(3, nrow(mont_vals) , by=3)),])
}
result <- df %>% Monthly_Qrt_vals()
View(result)
cat ID mont_dates mont_vals quarter
1 new 1 2014-01-01 221 2014 Q1
2 old 2 2014-02-01 433 2014 Q1
3 undefined 3 2014-03-01 878 2014 Q1
4 new 4 2014-04-01 455 2014 Q2
5 old 5 2014-05-01 998 2014 Q2
6 undefined 6 2014-06-01 797 2014 Q2
7 undefined 7 2014-07-01 77 2014 Q3
8 new 8 2014-08-01 3435 2014 Q3
9 old 9 2014-09-01 868 2014 Q3
10 undefined 10 2014-10-01 686 2014 Q4
11 new 11 2014-11-01 868 2014 Q4
12 old 12 2014-12-01 434 2014 Q4
Error个
Error in `mutate()`:
ℹ In argument: `quarterly_values = mont_vals[c(1, seq(3, nrow(mont_vals), by = 3)), ]`.
Caused by error in `seq.default()`:
! 'to' must be of length 1
Expected Outcome
quarterly_values
should take values of every third month assign to first row of quarters i.e. 2014 Q1, 2014 Q2
.
原始数据集是从2014-2023
年开始的,有没有替代的解决方案来获得quarterly_values
?
cat ID mont_dates mont_vals quarter quarterly_values
1 new 1 2014-01-01 221 2014 Q1 878
2 old 2 2014-02-01 433 2014 Q1 NA
3 undefined 3 2014-03-01 878 2014 Q1 NA
4 new 4 2014-04-01 455 2014 Q2 797
5 old 5 2014-05-01 998 2014 Q2 NA
6 undefined 6 2014-06-01 797 2014 Q2 NA
7 undefined 7 2014-07-01 77 2014 Q3 77
8 new 8 2014-08-01 3435 2014 Q3 NA
9 old 9 2014-09-01 868 2014 Q3 NA
10 undefined 10 2014-10-01 686 2014 Q4 686
11 new 11 2014-11-01 868 2014 Q4 NA
12 old 12 2014-12-01 434 2014 Q4 NA