r - R中逐年断点的计算
问题描述
我有每日降雨量数据,我已使用以下代码将其转换为年度累积值
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个断点。现在如何逐年动态地应用它来估计断点?
解决方案
您可以在1.0.0 中group_by
year
使用,它可以在以下位置生成多行:summarise
dplyr
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')
推荐阅读
- node.js - Kubernetes Ingress nodejs超时问题
- r - 如何在基于 RCppEigen 的 R 包中使用“使用命名空间 Eigen”?
- amazon-s3 - Kentico:Amazon S3 定期出现故障
- android - 在屏幕上调整大小:之前的屏幕宽度和高度在从 vkGetPhysicalDeviceSurfaceCapabilitiesKHR 返回的当前范围内
- nxlog - 您可以为 nxlog 创建自定义过滤器模块或函数吗?
- ruby-on-rails - 如何在 Rails 中创建自定义创建路线
- angular - 虽然 router-outlet 被写成一个标签名,但它怎么还是一个指令呢?
- ansible - 如何通过 Jinja2 中的 for 循环正确插入 Ansible var 文件中的变量
- elasticsearch - 难以对数据集运行基本的 Elasticsearch 查询
- c# - 如何使用 XNamespace 将 2 个命名空间添加到 xml 文档