我是新來的,所以也許我的問題很難理解。所以,我有一些資料,它是日期資訊,我需要將資料的平均值分組在年份范圍內。但是今年的范圍是不排除的,我的意思是,例如,我的第一個范圍是:2013-2015 然后 2014-2016 然后 2015-2017 等等。所以我認為可以通過使用回圈函式和 dplyr 來完成,但我不知道該怎么做。如果有人可以幫助我,我將非常感激。
謝謝,
亞歷杭德羅
我嘗試的是這樣的:
for (i in Year){
Year_3=c(i, i 1, i 2)
db>%> group_by(Year_3)
#....etc
}
uj5u.com熱心網友回復:
正如您所注意到的,每個觀察結果將用于多個組,因此一種方法可能是相應地制作資料副本:
df <- data.frame(year = 2013:2020, value = 1:8)
library(dplyr)
df %>%
tidyr::uncount(3, .id = "grp") %>%
mutate(group_start = year - grp 1,
group_name = paste0(group_start, "-", group_start 2)) %>%
group_by(group_name) %>%
summarise(value = mean(value),
n = n())
# A tibble: 10 × 3
group_name value n
<chr> <dbl> <int>
1 2011-2013 1 1
2 2012-2014 1.5 2
3 2013-2015 2 3
4 2014-2016 3 3
5 2015-2017 4 3
6 2016-2018 5 3
7 2017-2019 6 3
8 2018-2020 7 3
9 2019-2021 7.5 2
10 2020-2022 8 1
或者我們可以采用更代數的方法,注意三年期間的總和將是未來兩年的累計金額減去前一年的累計金額之間的差值。這種方法排除了部分范圍。
df %>%
mutate(cuml = cumsum(value),
value_3yr = (lead(cuml, n = 2) - lag(cuml, default = 0)) / 3)
year value cuml value_3yr
1 2013 1 1 2
2 2014 2 3 3
3 2015 3 6 4
4 2016 4 10 5
5 2017 5 15 6
6 2018 6 21 7
7 2019 7 28 NA
8 2020 8 36 NA
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/522536.html
標籤:r循环dplyr
