R中逐年断点的计算

R中逐年断点的计算,r,tidyverse,breakpoints,R,Tidyverse,Breakpoints,我有每天的降雨量数据,我已经使用下面的代码将其转换为全年的累积值 library(tidyverse); library(segmented); library(seas); library(strucchange) ## get mscdata from "seas" packages data(mscdata) dat <- (mksub(mscdata, id=1108447)) ## generate cumulative sum of rain by ye

我有每天的降雨量数据,我已经使用下面的代码将其转换为全年的累积值

library(tidyverse); library(segmented); library(seas); library(strucchange)

## get mscdata from "seas" packages
data(mscdata)
dat <- (mksub(mscdata, id=1108447))

## generate cumulative sum of rain by year
d2 <- dat %>% group_by(year) %>% mutate(rain_cs = cumsum(rain)) %>% ungroup

我使用了
breaks=3
来设置3个断点。现在,如何动态地应用它来按年份估计断点?

您可以
年份对\u进行分组,并在
dplyr
1.0.0中使用
摘要
,它可以在
摘要
中生成多行:

library(dplyr) 
library(strucchange)

d2 %>%
  group_by(year) %>%
  summarise(breakpoints = breakpoints(rain_cs~1, breaks = 3)$breakpoints)

#   year breakpoints
#   <int>       <dbl>
# 1  1975          73
# 2  1975         237
# 3  1975         301
# 4  1976          83
# 5  1976         166
# 6  1976         297
# 7  1977          98
# 8  1977         239
# 9  1977         311
#10  1978         102
# … with 80 more rows

它的格式是否可以使3个断点变成三列,行名仅为一年?
library(dplyr) 
library(strucchange)

d2 %>%
  group_by(year) %>%
  summarise(breakpoints = breakpoints(rain_cs~1, breaks = 3)$breakpoints)

#   year breakpoints
#   <int>       <dbl>
# 1  1975          73
# 2  1975         237
# 3  1975         301
# 4  1976          83
# 5  1976         166
# 6  1976         297
# 7  1977          98
# 8  1977         239
# 9  1977         311
#10  1978         102
# … with 80 more rows
d2 %>%
  group_by(year) %>%
  summarise(breakpoints = list(breakpoints(rain_cs~1,breaks = 3)$breakpoints)) %>%
  tidyr::unnest_wider(breakpoints) %>%
  tibble::column_to_rownames('year')