r语言 - 对数据集中指定行中从最大值到最小值的列进行排序



假设我有一个数据集:

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]

最新更新