如何按R数据帧中的连续行分组?

弗雷德·约翰逊

我在时间序列数据中有一个列TimeStamp,Type,Value的数据框。类型指的是峰还是谷。我想要:

按连续类型对所有数据进行分组对于“峰值”类型的组,我想选择最高的值对于“山谷”类型的组,我想选择最低的值。按这些最高/最低值过滤数据框期望:我会有一个数据框交替出现在最高峰和最低谷之间排。

我知道如何执行此操作的唯一方法是使用for循环,然后将连续值添加到向量中,然后获取最大值,然后将其推到新的数据帧中,依此类推。

对于那些了解python的人,这就是我所做的(尽管我需要将我的代码传输到R):

segmentation['min_v'] = segmentation.groupby( segmentation.pv_type.ne(segmentation.pv_type.shift()).cumsum() ).price.transform(min)
segmentation['max_p'] = segmentation.groupby( segmentation.segmentation.pv_type.ne(segmentation.pv_type.shift()).cumsum() ).price.transform(max)

编辑

样本数据集:

types <- c('peak', 'peak', 'valley', 'peak', 'valley', 'valley', 'valley')
values <- c(1.01,   1.00,    0.4,     1.2,     0.3,      0.1,      0.2)
segmentation <- data.frame(types, values)
segmentation

expectedTypes <- c('peak', 'valley', 'peak', 'valley')
expectedValues <- c(1.00, 0.4, 1.2, 0.1 )
expectedResult <- data.frame(expectedTypes, expectedValues)
expectedResult

我不知道一种更好的方法来生成数据。

阿克伦

使用时R,使用的一种实现dplyr方式是将'pv_type'和'pv_type'之间的逻辑比较的累积和lag作为分组列,然后将'price'minmax'price'作为两个新列

library(dplyr)
segmentation %>%
       group_by(pv_type_group = cumsum(pv_type != lag(pv_type,
                 default = first(pv_type))) %>%
       mutate(min_v = min(price), max_p = max(price))

更新资料

在OP的示例中,预期输出为summarised,因此我们使用summarise代替mutate另外,使用rleid(from data.table)代替逻辑累计和

library(data.table)
segmentation %>% 
    group_by(grp = rleid(types)) %>% 
    summarise(types = first(types), expectedvalues = min(values)) %>%
    ungroup %>%
    select(-grp)
# A tibble: 4 x 2
#  types  expectedvalues
# <fct>           <dbl>
#1 peak              1  
#2 valley            0.4
#3 peak              1.2
#4 valley            0.1

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何按数据帧中的序列分组

如何按R中的特定行拆分数据帧

如何仅在 Oracle 中按连续数据分组

根据列的值连续性,按行拆分/分组熊猫数据帧

R如何在数据帧中按字符串(文本等级)分组?

将R中的数据表中的连续行分组

R数据帧按连接值分组

在R中按行和按列合并数据帧

按r中的连续值分组

从R中的数据帧/小标题中采样分组的行

如何在R中按行对数据帧进行排序,然后将其拆分为多个数据帧?

R中连续数据的分组数据

如何按行分组数据?

如何按一个变量对R中的数据帧进行排序,同时对其他变量进行分组

如何从R中的分组数据帧标准化子组

按行计算数据帧但按日期时间分组

在熊猫中按ID分组的数据框中减去连续的行(Python)

在 Pandas 中按 ID 分组的数据框中减去每一年的连续行

如何在 R 中创建一个函数来比较数据帧的连续偶数行和奇数行并返回相同格式的数据帧?

如何按R中的行随机组合不同的数据帧

如何按名称将一行放置到r中数据帧的开头

行中的Python / Pandas数据帧时间数据(按名称分组)

如何将按数据帧分组的另一行减去另一行?

在R中按组填充数据帧的行

按R中的行差异聚合数据帧

如何按 r 中特定分组变量级别的特定顺序排列数据行

如何在大数据帧中按组对行求和?

按 R 中的连续值对数据框行进行分组

如何按R中的特定列转置数据帧