gpt4 book ai didi

r - 根据 R 中其他列中的值创建一个序列

转载 作者:行者123 更新时间:2023-12-02 08:14:46 26 4
gpt4 key购买 nike

我正在使用类似于以下的数据框:

 df = data.frame(ID1 = c(2,2,2,2,2,2,2), 
ID2 = c(1,1,1,1,1,1,1),
flagTag = c(0,0,0,0,1,0,0))

我需要创建一个新字段“newField”,以便在 ID1 和 ID2 组内的 flagTag = 1 时值递增(因此唯一记录由 ID1 和 ID2 的组合标识)。结果表应该看起来类似

    ID1 ID2 flagTag newField
1 2 1 0 1
2 2 1 0 1
3 2 1 0 1
4 2 1 0 1
5 2 1 1 2
6 2 1 0 2

我正在尝试使用 dplyr 来执行此操作,但无法想出执行此类操作的逻辑。一种方法是在数据框中逐条记录并循环更新“newField”,这将是一个缓慢的过程。

最佳答案

让我们使用cumsummutate:

library(dplyr)

df %>%
group_by(ID1, ID2) %>%
mutate(newField = 1 + cumsum(flagTag))


ID1 ID2 flagTag newField
<dbl> <dbl> <dbl> <dbl>
1 2 1 0 1
2 2 1 0 1
3 2 1 0 1
4 2 1 0 1
5 2 1 1 2
6 2 1 0 2
7 2 1 0 2

关于r - 根据 R 中其他列中的值创建一个序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42913912/

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