如何根据R中现有列中的循环计算数据框中的新变量?

时间:2018-01-19 21:49:46

标签: r dataframe

我的数据框中有一个循环(从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?

2 个答案:

答案 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