r - R中年度断点的计算

标签 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 year
d2 <- dat %>% group_by(year) %>% mutate(rain_cs = cumsum(rain)) %>% ungroup

然后我想使用 strucchange 计算年度断点。我可以像这样在一年内做到这一点

y <- subset(d2,year=="1992")$rain_cs
breakpoints(y ~ 1, breaks = 3)$breakpoints

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

最佳答案

您可以group_by year 并在dplyr 1.0.0 中使用summarise 可以在总结:

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 列数据,我们可以将输出存储在列表中并使用 unnest_wider

d2 %>%
  group_by(year) %>%
  summarise(breakpoints = list(breakpoints(rain_cs~1,breaks = 3)$breakpoints)) %>%
  tidyr::unnest_wider(breakpoints) %>%
  tibble::column_to_rownames('year')

关于r - R中年度断点的计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62591661/

相关文章:

r - 使用 dplyr 获取相对频率百分比的更智能方法?

r - 每周第二个星期二结束的 2 周总和

r - 使用 tidyverse 和 purrr 进行双重嵌套

c++ - 如何设置条件断点来测试 CString 变量是否为空

iOS 解析器分配断点

r - 如何每秒显示R ggplot2 x轴标签值?

r - 将宽数据帧转换为具有两列以上的纵向格式

r - 根据投票百分比同时移动所有几何条

r - 将列表转换为 Tibble 并添加带有列表名称的列

c# - 为默认构造函数添加断点