r - 在R中按所需顺序重新排列数据框的列
问题描述
我有一个如下的数据框,想要更改其列的顺序。我希望列的顺序为:1、4、2、5、3、6。我该如何重新排序?请注意,这是一个小示例,我还有更多列希望像这样对它们进行排序。一般公式为第一批为 1+3x,第二批为 2+3x,最后一批为 3+3x,其中 x=0,1,2,...。
dput(medg)
structure(list(X1 = c(1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3,
3, 3, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 1, 2, 3, 1,
2, 3), X2 = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2),
X3 = c(2, 3, 1, 2, 3, 1, 3, 1, 2, 3, 1, 2, 1, 2, 3, 1, 2,
3, 2, 3, 1, 2, 3, 1, 3, 1, 2, 3, 1, 2, 1, 2, 3, 1, 2, 3),
X4 = c(1, 1, 2, 2, 2, 1, 1, 2, 2, 2, 1, 1, 2, 2, 2, 1, 1,
1, 2, 2, 1, 1, 1, 2, 2, 1, 1, 1, 2, 2, 1, 1, 1, 2, 2, 2),
X5 = c(0, 0.2622587, 0.1040687, 0.1409907, 0, 0, 0.6184543,
0.9525439, 0.7830234, 0.3400703, 0.2622587, 0.6184543, 0.3765996,
0.907851, 0.5296791, 0.1040687, 0.9525439, 0.3765996, 0.5567241,
0.3325466, 0.1409907, 0.7830234, 0.907851, 0.5567241, 0.2221638,
0, 0.3400703, 0.5296791, 0.3325466, 0.2221638, 0, 0, 0, 0,
0, 0)), class = "data.frame", row.names = c(NA, -36L))
```
解决方案
我们可以创建一个matrix
来重新排列列顺序
medg[c(matrix(seq_along(medg), ncol = 3, byrow = TRUE))[seq_along(medg)]]
另外,如果我们想使用3 *
i1 <- rep(seq_len(ceiling(ncol(medg)/2)), each = 2) + 3 * (0:1)
medg[i1[seq_along(medg)]]
推荐阅读
- java - 更新:IBM MQ 系列上的 Spring Boot JMS 静态回复队列
- reactjs - 如何从firestore获取用户数据反应
- javascript - 在高级 js 中使用 Fetch 方法时如何绕过缓存
- size - 读取avi文件,用cv2.VideoCapture和video.read获取单帧,单帧的png文件比avi大很多
- http-redirect - 如何使用特使代理重定向
- ansible - 使用 import_tasks 时如何触发处理程序(通知)?
- python - 如何使用 plotly 和 python 绘制 groupby 函数?
- excel - 按名称查找列并将其转换为 vba
- object-detection - 尝试生成 TFrecord 但我收到此错误“FileNotFoundError: [Errno 2] No such file or directory”
- flutter - Flutter:容器的动画边框颜色