gpt4 book ai didi

r - 创建基于按 ID 分组的另一列的值重新启动的序列变量

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

我想创建一个序列变量,该变量在另一列的值超过 7 时重置。此外,我希望按 ID 和日期顺序对排序进行分组。
这就像下面示例数据框中的第 3 列:

# ID     Column_1   Column_2   Column_3
# 1 DATE 0 0
# 1 DATE 2 1
# 1 DATE 4 2
# 1 DATE 100 0
# 1 DATE 3 1
# 1 DATE 50 0
# 1 DATE 2 1
# 1 DATE 5 2
# 1 DATE 20 0
# 1 DATE 3 1
# 1 DATE 59 0
# 1 DATE 1 1
我已经尝试了以下但它似乎不起作用。
df <- df %>%
group_by(ID) %>%
arrange(DATE) %>%
mutate(Column_3 = ave(Column_2, cumsum(Column_2 >7)), .after =
Column2)
预先感谢您的任何帮助!

最佳答案

你也可以用 purrr::accumulate() 来做:

library(dplyr)
library(purrr)

df %>%
group_by(ID) %>%
arrange(Column_1) %>%
mutate(Column_3 = accumulate(Column_2>7, ~ifelse(.y==TRUE, 0, .x+1)))

# A tibble: 12 x 4
# Groups: ID [1]
ID Column_1 Column_2 Column_3
<dbl> <chr> <dbl> <dbl>
1 1 DATE 0 0
2 1 DATE 2 1
3 1 DATE 4 2
4 1 DATE 100 0
5 1 DATE 3 1
6 1 DATE 50 0
7 1 DATE 2 1
8 1 DATE 5 2
9 1 DATE 20 0
10 1 DATE 3 1
11 1 DATE 59 0
12 1 DATE 1 1
数据
df1<-data.frame(ID=rep(1, 12), Column_1=rep("DATE", 12), Column_2=c(0,2,4,100, 3,50,2,5,20,3,59,1))

关于r - 创建基于按 ID 分组的另一列的值重新启动的序列变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68626287/

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