我有以下格式的数据,称为 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
但是,eval.count 列不正确,我需要修复它。它应该仅通过查看前面的行来报告具有相同值(green.h.0、green.v.0 和 offset.0)的行数。
上面的示例使用了预期值,但假设它们不正确。
如何添加一个新列(例如“计数”)来计算具有指定变量相同值的所有先前行?
我已经获得了有关类似问题的帮助,即仅选择指定列具有相同值的所有行,所以我想我could只需围绕它编写一个循环,但对我来说似乎效率低下。
好的,我们首先在只有一列的简单情况下进行操作。
> data <- rep(sample(1000, 5),
sample(5, 5))
> head(data)
[1] 435 435 435 278 278 278
然后你可以使用 rle 来找出连续的序列:
> sequence(rle(data)$lengths)
[1] 1 2 3 1 2 3 4 5 1 2 3 4 1 2 1
或者完全:
> 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
对于多列的情况,可能有多种应用此解决方案的方法。最简单的可能就是paste
您关心的列一起形成一个向量。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)