我的数据框中有一个循环(从1开始到随机数,然后再从1开始),如下所示:
columnA <- c(1:4,1:5,1:4,1:6,1:5,1:4)
现在我想要第二列,每次数字1出现在A列时,它的数字会增加一个。所以在这个例子中它看起来像这样:
columnB <- c(rep(1,4),rep(2,5),rep(3,4),rep(4,6),rep(5,5),rep(6,4))
df <- data.frame(columnA, columnB)
有没有办法在不手动计算重复次数的情况下获取columnB?
答案 0 :(得分:3)
最简单的事情是累积总和A==1
例如
columnB <- cumsum(columnA==1)
这样你基本上可以添加1&#34;每次看到1。
答案 1 :(得分:0)
这将实现它:-)
library(data.table)
cumsum((columnA-shift(columnA,fill=0))!=1)+1
[1] 1 1 1 1 2 2 2 2 2 3 3 3 3 4 4 4 4 4 4 5 5 5 5 5 6 6 6 6