gpt4 book ai didi

r - 对具有相同值的行进行分组

转载 作者:行者123 更新时间:2023-12-04 11:34:20 24 4
gpt4 key购买 nike

我正在处理极端干旱事件,并试图获取有关其特征的一些信息。这是我的数据示例:

   dat <- data.frame(length= c(39,1,1,1,98,1,1,1,57,1,1,1,34,1,1), value = c(0,-1.111,-1.645,-1.285,0,-1.223,-1.369,-1.007,0,-1.083,-1.675,-1.119,0,-1.554,-1.6228))

行是月份,因此“长度”列用数字 1 标识干旱月份,而“值”列则记录该干旱事件的严重程度。我想获得的是,一方面是干旱事件的中值和最大长度,但将每组连续的干旱月份(长度 = 1)视为一个事件(红色框);另一方面,我想计算系列中所有干燥事件严重程度的中值和最小值。

此屏幕截图显示了我正在尝试获取的内容以及我希望获取的值。

enter image description here

我的主要问题是如何将“长度”列中值为 1 的连续行组视为一个独特的案例,并计算这些简单的统计数据。

非常感谢您提供的任何帮助。

最佳答案

一种选择是创建一个具有运行长度 ID (rleid) 的分组变量,然后使用它来总结 中值的“值” min 和其他感兴趣的统计数据(即行数 - n())

library(dplyr)
library(data.table)
dat %>%
group_by(grp = rleid(length == 1)) %>%
filter(length == 1) %>%
summarise(Length = n(), Median = median(value), Min = min(value))

或使用 data.table 的类似方式,首先使用 rleid 创建分组变量,按 'grp' 分组并指定 i用逻辑表达式对 'length' 中只等于 1 的行进行子集化,得到 medianmin (or max) in “值”列

library(data.table)
setDT(dat)[, grp := rleid(length==1)][length == 1,
.(Length = .N, Median = median(value), Min = min(value)), .(grp)]

关于r - 对具有相同值的行进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54344446/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com