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
方法二
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
由 RonakShah 推荐
dat1[, order(dat1[1, ]), with = FALSE]
推荐阅读
- reactjs - 重用同一个 React 钩子创建的事件监听器
- c++ - 有没有办法检查发送到变量的值是否是正确的类型,而它已经在该变量下?
- c# - EntityFramework 外键返回 null
- graphics - Windows 10 如何在多显示器、多 GPU 环境下渲染窗口?
- python - Discord.py 错误:当试图让机器人离开语音通道时,对象 NoneType 不能用于“等待”表达式
- javascript - React JS,Redux 状态更新出错,无法读取属性 Symbol(Symbol.iterator)
- javascript - 从 Typescript 接口生成数据库模式
- php - PHP脚本显示除以零的错误,其中变量的值大于零
- bootstrap-4 - 粘性导航不会跟随页面上的下一个容器
- python - 如何根据单词的值排列单词列表?