我想做这样的事情:
如何使R中的A列唯一并保留B列中具有最大值的行
除了我的data.table
有一个键列和多个值列。所以说我有以下内容:
a b c
1: 1 1 1
2: 1 2 1
3: 1 2 2
4: 2 1 1
5: 2 2 5
6: 2 3 3
7: 3 1 4
8: 3 2 1
如果键是列a
,我想要每个独特的a
返回具有最大值的行b
,并且如果有多个唯一的最大值b
, 取最大的一个c
对于多列依此类推。所以结果应该是:
a b c
1: 1 2 2
2: 2 3 3
3: 3 2 1
我还希望对任意数量的列执行此操作。因此,如果我的 data.table 有 20 列,我希望按从左到右的顺序应用 max 函数。
这是建议的 data.table 解决方案。您可能需要考虑使用data.table::frankv
如下:
DT[, .SD[frankv(.SD, ties.method="first")[.N],], by=a]
frankv
返回订单。然后[.N]
将获得最大的排名。然后.SD[
该特定行的子集。
如果您的较大数据集失败,请告诉我。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)