【发布时间】:2017-01-07 01:39:38
【问题描述】:
我对 data.table 还很陌生,并且有一个基本问题。我正在尝试根据这两列重新排序以下数据表。
library(data.table)
DT <- data.table(letter=c('a','a','a','a','b','b','c','d','d','d','d'),
value =c(1,2,4,8,2,5,1,1,2,3,9))
letter value
1: a 1
2: a 2
3: a 4
4: a 8
5: b 2
6: b 5
7: c 1
8: d 1
9: d 2
10: d 3
11: d 9
我想根据最低关联值对字母进行排序,如果它们相等,则应该比较下一个值(如果可用)等等。
这应该会产生以下结果:
letter value
1: c 1
2: d 1
3: d 2
4: d 3
5: d 9
6: a 1
7: a 2
8: a 4
9: a 8
10: b 2
11: b 5
我尝试过DT[order(value), .SD, letter],它确实按值排序,但在最低关联值的情况下不考虑后续值。我觉得应该有一个简单的方法来做到这一点,但我找不到答案。谢谢。
【问题讨论】:
-
所以您想先按“价值”排序,然后按字母排序? setorder(DT, value, -letter) 呢?
-
不,我想获得最低值的字母,然后是该字母的所有其他值。然后移动到具有下一个最小值的字母并获取具有该字母的所有行。在平局的情况下,必须比较字母的后续值。抱歉,如果不清楚。
标签: r data.table