r - 更改 r 中数字命名列的顺序
问题描述
如果我有一个像下面这样的数据框,它有数字列名
example = data.frame(1=c(1,8,3,9), 2=c(3,2,3,3), 3=c(5,2,5,4), 4=c(1,2,3,4), 5=c(2,5,7,8))
看起来像这样:
1 2 3 4 5
1 3 5 1 2
8 2 2 2 5
3 3 5 3 7
9 3 4 4 8
我想安排它,使列名以三开头,然后通过五,然后回到一,如下所示:
3 4 5 1 2
5 1 2 1 3
2 2 5 8 2
5 3 7 3 3
4 4 8 9 3
我知道如何重新排列数据集中单个列的位置,但我不确定如何以这个特定顺序处理多个列。
解决方案
我们可以在一系列值上使用c
基于序列 ( )连接的列索引 ( ):
example[c(3:5, 1:2)]
# 3 4 5 1 2
#1 5 1 2 1 3
#2 2 2 5 8 2
#3 5 3 7 3 3
#4 4 4 8 9 3
由于列名都是数字,只需转换为numeric
并使用它进行排序
v1 <- as.numeric(names(example))
example[c(v1[3:5], v1[1:2])]
或者干脆做
example[c(names(example)[3:5], names(example)[1:2])]
或者另一种方式是head
与tail
example[c(tail(names(example), 3), head(names(example), 2))]
数据
example <- data.frame(`1`=c(1,8,3,9), `2`=c(3,2,3,3),
`3`=c(5,2,5,4), `4`=c(1,2,3,4), `5`=c(2,5,7,8), check.names = FALSE)
推荐阅读
- mysql - MYSQL - 返回查询 A 或查询 B,但不能同时返回。如果两者都存在,则查询 A 的返回结果
- c# - 无法从单独文件夹的控制器访问视图
- regex - 正则表达式关键字搜索接近日期
- r - 计算总和并处理 NA
- stm32 - STM32F429 发现 - 无法使用 SPI 和 DMA 来驱动 WS2812B LED
- webassembly - WASM 运行时何时会集成到 Envoy 代理中
- php - 如何引用未知列?
- json - 尝试为 tableView 单元格引用自定义类型的每个项目
- ruby-on-rails - Rails下拉菜单,一个字段的选择如何触发另一个字段的出现
- asp.net-core - 使用内容交付网络的 DataTable 的 ASP Net Core 缺少按钮