我有一个称为“蝙蝠侠”的数据框。它有近10万行。
一栏称为“客栈”。像这样{1,1,1,1,2,2,2,1,1,1,1,1,2,2,2,2,2,0,0,1,1,1,1,1 ,2,2,2,2,2,2,2 ...}
我想在同一数据框中定义一个新列“ Position”。这将是一个条件整数序列(seq.int)。它将从1开始,一直持续到'Inns'改变值。一旦“ Inns”更改值,“ Position”将再次从1开始。因此,在上面的“客栈”示例中,“位置”应如下所示:{1,2,3,4,1,2,3,1,2,3,4,5,1,2,3,4 ,1,2,1,2,3,4,5,1,2,3,4,5,6,7 ....}
我可以使用for循环来做到这一点。但是我不想浪费运行时间,因为我认为这是整个程序中的一小步。您能建议一种不使用for循环的简单方法吗?
我们可以使用基本的Rrle
函数,然后提取它的length
属性,并使用该sequence
函数生成适当的序列
sequence(rle(x)$lengths)
#[1] 1 2 3 4 1 2 3 1 2 3 4 5 1 2 3 4 1 2 1 2 3 4 5 1 2 3 4 5 6 7
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句