gpt4 book ai didi

R:计算单列和组中连续出现的值

转载 作者:行者123 更新时间:2023-12-04 11:15:14 26 4
gpt4 key购买 nike

我正在尝试创建一系列相等的值,即出现次数。但是,即使该行保持顺序,我也希望在引入新 ID 后重置计数。

我的数据的示例:

dataset <- data.frame(ID = 
c("a","a","a","a","a","a","a","b","b","b","b","b","b","b")
dataset$YesNO <- c(1,1,0,0,0,1,1,1,1,1,0,0,0,0)

所以我想创建一个新列,结果如下:
c(1,2,1,2,3,1,2,1,2,3,1,2,3,4)

我使用了在这个论坛上找到的这段代码:
dataset$Counter <- sequence(rle(as.character(dataset$YesNo))$lengths)

但是,这不会重置新 ID 号的计数。相反,顺序计数继续,结果输出为:
c(1,2,1,2,3,1,2,3,4,5,1,2,3,4)

我错过了根据 ID 重置它的步骤。

谢谢!

最佳答案

使用 rleid (来自 data.table 包)获取分组变量,然后使用 ave申请 seq_along在该分组的共同值(value)观内:

library(data.table)
transform(dataset, Counter = ave(YesNO, rleid(ID, YesNO), FUN = seq_along))

给予:
   ID YesNO Counter
1 a 1 1
2 a 1 2
3 a 0 1
4 a 0 2
5 a 0 3
6 a 1 1
7 a 1 2
8 b 1 1
9 b 1 2
10 b 1 3
11 b 0 1
12 b 0 2
13 b 0 3
14 b 0 4

关于R:计算单列和组中连续出现的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54581440/

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