假设我有一个数据集:
library(data.table)
dat1<-data.table(id=c(111,111,111,222,222,222), year=c(1995,1996,1997,1995,1996,1997), value=c(4,5,1,2,6,7))
如何根据第 1 行(或任意行(中值的大小对数据集的列进行排序。
我希望我的输出是:
dat2<-data.table(value=c(4,5,1,2,6,7),id=c(111,111,111,222,222,222), year=c(1995,1996,1997,1995,1996,1997)
因为在 dat1 第 1 行中,值 4 是生成"dat1$value"列 1 的最小值,id 111 是生成"dat1$id"列 2 的第二小值,而 1995 年是生成"dat1$year"列 3 的最大值。
你可以做setcolorder
setcolorder(dat1, names(dat1)[order(dat1[1])])
dat1
value id year
1: 4 111 1995
2: 5 111 1996
3: 1 111 1997
4: 2 222 1995
5: 6 222 1996
6: 7 222 1997
方法 2
dat1 = dat1[,names(dat1)[order(dat1[1,])],with=F]
value id year
1: 4 111 1995
2: 5 111 1996
3: 1 111 1997
4: 2 222 1995
5: 6 222 1996
6: 7 222 1997
罗纳克沙推荐
dat1[, order(dat1[1, ]), with = FALSE]