【发布时间】:2015-12-21 18:59:22
【问题描述】:
我有一个包含如下数据的矩阵:
col1 col2 col3 col4 col5
2 3 2 8 3
7 1 0 4 NA
5 8 1 NA NA
9 6 NA NA NA
4 NA NA NA NA
我想将数据重新排列为以下结果,基本上将NA移动到每列的顶部:
col1 col2 col3 col4 col5
2 NA NA NA NA
7 3 NA NA NA
5 1 2 NA NA
9 8 0 8 NA
4 6 1 4 3
如您所见,新数据的排序向量基于此排序矩阵:
col1 col2 col3 col4 col5
1 5 4 3 2
2 1 5 4 3
3 2 1 5 4
4 3 2 1 5
5 4 3 2 1
我认为最好的方法是将排序矩阵应用于原始矩阵,所以 col1 排序向量排序 col1,col2 排序向量排序 col2,依此类推。
【问题讨论】:
-
for (col in 1:ncol(your_matrix)) your_matrix[, col] = your_matrix[order_matrix[, col], col]. -
或者您需要帮助生成订单矩阵吗?
-
订单矩阵为
apply(!is.n(your_matrix), MARGIN = 2, FUN = order)。