gpt4 book ai didi

r - 如何对具有相同事件的连续行进行分组并找到平均值?

转载 作者:行者123 更新时间:2023-12-01 21:48:19 24 4
gpt4 key购买 nike

Value <- c(2,3,5,2,5,8,17,3,5)
Event <- c(1,1,2,2,2,1,1,2,2)

group <- data.frame(pt=Value, Event=Event)

我有上面的数据,我想以一种会导致以下结果的方式对事件进行分组。

Event Value
1 2.5
2 4
1 12.5
2 4

提前谢谢你。

最佳答案

我们可以使用 data.table 中的 rleid 创建一个分组变量,用它来获取 'pt' 的 mean 以及返回 '​​Event' 的 first

library(dplyr)
library(data.table)
group %>%
group_by(grp = rleid(Event)) %>%
summarise(Event = first(Event), Value = mean(pt)) %>%
select(-grp)
# A tibble: 4 x 2
# Event Value
# <dbl> <dbl>
#1 1 2.5
#2 2 4
#3 1 12.5
#4 2 4

或者在base R中使用tapply/rle

with(group, tapply(pt, with(rle(Event),
rep(seq_along(values), lengths)), FUN = mean))
# 1 2 3 4
# 2.5 4.0 12.5 4.0

关于r - 如何对具有相同事件的连续行进行分组并找到平均值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59991203/

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