gpt4 book ai didi

r - 将最大连续长度的值分配给连续中的所有行

转载 作者:行者123 更新时间:2023-12-04 07:37:11 25 4
gpt4 key购买 nike

我有一个 data.frame像这样:

> numeric_value <- c(10, 11, 21, 25, 15, 29, 30, 35, 9, 20, 21, 40, 22)
> threshold_reached <- c(F, F, T, T, F, T, T, T, F, T, T ,T, T)
> dat <- data.frame(numeric_value, threshold_reached)
我想要一个用于每个连续的最大连续长度的新变量(连续是 TRUE 的值 threshold_reached ),如下所示:
> max_streak_length <- c(0, 0, 2, 2, 0, 3, 3, 3, 0, 4, 4, 4, 4)
> data.frame(numeric_value, threshold_reached, max_streak_length)
numeric_value threshold_reached max_streak_length
1 10 FALSE 0
2 11 FALSE 0
3 21 TRUE 2
4 25 TRUE 2
5 15 FALSE 0
6 29 TRUE 3
7 30 TRUE 3
8 35 TRUE 3
9 9 FALSE 0
10 20 TRUE 4
11 21 TRUE 4
12 40 TRUE 4
13 22 TRUE 4
还有一些类似的问题,比如 this onethis one ,使用 runner包裹或 rle包裹。但是我还没有找到可以解决这个特定问题的方法,而且我自己也看不到解决方案。
最好,我想使用 dplyr::mutate 得到答案但这不是必需的。
谢谢!

最佳答案

一种选择可能是:

dat %>%
mutate(max_streak_length = with(rle(threshold_reached), rep(values * lengths, lengths)))

numeric_value threshold_reached max_streak_length
1 10 FALSE 0
2 11 FALSE 0
3 21 TRUE 2
4 25 TRUE 2
5 15 FALSE 0
6 29 TRUE 3
7 30 TRUE 3
8 35 TRUE 3
9 9 FALSE 0
10 20 TRUE 4
11 21 TRUE 4
12 40 TRUE 4
13 22 TRUE 4

关于r - 将最大连续长度的值分配给连续中的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67672395/

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