R计算类似行数据帧的出现次数

Mat*_*att 3 r count duplicates dataframe

我有以下格式的数据称为DF(这只是一个简化的简化示例):

eval.num, eval.count, fitness, fitness.mean, green.h.0, green.v.0, offset.0 random
1         1           1500     1500          100        120        40       232342
2         2           1000     1250          100        120        40       11843
3         3           1250     1250          100        120        40       981340234
4         4           1000     1187.5        100        120        40       4363453
5         1           2000     2000          200        100        40       345902
6         1           3000     3000          150        90         10       943
7         1           2000     2000          90         90         100      9304358
8         2           1800     1900          90         90         100      284333
Run Code Online (Sandbox Code Playgroud)

但是,eval.count列不正确,我需要修复它.它应该仅通过查看前面的行来报告(green.h.0,green.v.0和offset.0)具有相同值的行数.

上面的示例使用了预期值,但假设它们不正确.

如何添加一个新列(比如"count"),它将计算具有相同指定变量值的所有先前行?

我已经得到了一个类似的问题的帮助,即只选择具有相同值的指定列的所有行,所以我想我可以围绕它写一个循环,但对我来说似乎效率低下.

Jon*_*ang 9

好的,让我们首先在简单的情况下进行,只需要一列.

> data <- rep(sample(1000, 5),
              sample(5, 5))
> head(data)
[1] 435 435 435 278 278 278
Run Code Online (Sandbox Code Playgroud)

然后你可以使用rle来计算出连续的序列:

> sequence(rle(data)$lengths)
[1] 1 2 3 1 2 3 4 5 1 2 3 4 1 2 1
Run Code Online (Sandbox Code Playgroud)

或者完全:

> head(cbind(data, sequence(rle(data)$lengths)))
[1,]  435 1
[2,]  435 2
[3,]  435 3
[4,]  278 1
[5,]  278 2
[6,]  278 3
Run Code Online (Sandbox Code Playgroud)

对于具有多列的情况,可能有很多方法可以应用此解决方案.最简单的可能是paste您关注的列,以形成单个向量.