重新排列数据行

时间:2019-11-06 19:42:42

标签: r sorting dataframe

我有一个包含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安排功能,但没有成功。有人可以帮助解决此问题吗?

非常感谢。

1 个答案:

答案 0 :(得分:1)

我们可以通过编程方式执行此操作。创建行向量('v1')的序列,然后将其转换为具有2列('m1')的matrixsplit将data.frame转换为matrix,并使用分组变量用gl创建,因此我们每3列拆分一次,以创建list的{​​{1}},用data.frame遍历list,转置({{ 1}}),并将lapply转换为tmatrix),vector c元素并将其用作子集的索引。进行转置,以便当我们进行连接(unlist)时,它可以利用默认行为,即按列顺序获取值作为向量。

list

或者使用c,我们通过创建row_number列,然后按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

gl