r - 重新排列数据行
问题描述
我有一个包含 2 个变量(列)和 108 行的数据框,我需要重新排列两列的行顺序,如下所示:1、2、3、55、56、57、4、5、6、58、 59, 60, 7, 8, 9, 61, 62, 63, 10, 11, 12, 64, 65, 66, 13, 14, 15, 67, 68, 69, 16, 17, 18, 70, 71, 72, 19, 20, 21, 73, 74, 75, 22, 23, 24, 76, 77, 78, 25, 26, 27, 79, 80, 81, 28, 29, 30, 82, 83, 84, 31, 32, 33, 85, 86, 87, 34, 35, 36, 88, 89, 90, 37, 38, 39, 91, 92, 93, 40, 41, 42, 94, 95, 96, 43, 44, 45, 97, 98, 99, 46, 47, 48, 100, 101, 102, 49, 50, 51, 103, 104, 105, 52, 53, 54, 106, 107, 108...为此我正在尝试使用 dplyr 排列功能但没有成功。任何人都可以帮助解决这个问题吗?
非常感谢。
解决方案
我们可以通过编程方式做到这一点。创建行向量序列('v1'),然后将其转换为matrix
具有 2 列('m1')的 a,使用创建的分组变量split
转换 data.frame ,以便我们在每 3 列处拆分以创建s ,循环使用,转置( ),并将元素转换为(),并将其用作子集的索引。转置完成后,当我们进行连接 ( ) 时,它可以利用默认行为,即按列顺序将值作为向量获取。matrix
gl
list
data.frame
list
lapply
t
matrix
vector
c
unlist
list
c
v1 <- seq_len(nrow(df1))
m1 <- matrix(v1, nrow = 2, byrow = TRUE)
ind <- unlist(lapply(split.default(as.data.frame(m1),
as.integer(gl(ncol(m1), 3, ncol(m1)))), function(x) c(t(x))))
df1[ind,]
或者dplyr
,我们采用相同的方法,通过创建 row_number 列,然后按创建的列分组gl
,我们arrange
将行
library(dplyr)
df1 %>%
transmute(v1 = row_number()) %>%
group_by(grp = as.integer(gl(n(), n()/2, n()))) %>%
group_by(grp1 = gl(n(), 3, n())) %>%
ungroup %>%
arrange(grp1) %>%
pull(v1) %>%
arrange(df1, .)
推荐阅读
- mac-catalyst - UICollectionView 不响应 Catalyst 中的拖动/滑动
- javascript - 如何离线使用 Docker install file.deb?
- reactjs - 尝试将 React 功能组件转换为类组件失败
- amazon-web-services - 增加 AWS Elastic Beanstalk 实例大小或增加负载均衡器是否有助于减少随机 502 Nginx 错误?
- pycharm - 如何将 Pycharm 字体颜色设置为与 Sublime text 3 相同
- python - 尝试根据多列中的多个条件创建新列
- java - 索引 0 超出了 university_info.UniversityDriver.main(UniversityDriver.java:39) 中长度 0 的范围
- asp.net-core - ASPNET CORE:首次启动时数据保护需要 3 分钟以上
- javascript - 在 WordPress 中,如何按下按钮并将所有当前访问者重定向到另一个页面?
- python - 如何处理javascript以在python中进行抓取?