繁体   English   中英

如何按目标向量给定的列值重新排序数据框

[英]How to reorder dataframe by column values given by a target vector

我有一个这样的矩阵:

structure(c("A1", "B", "C", "A1", "A2", "C", "1", "2", "3", "4", 
"5", "6"), .Dim = c(6L, 2L))

我想使用目标向量

target <- c("A1","A2", "B", "C")

对行重新排序并获得这样的数据帧:

"A1" "1" 
"A1" "4"
"A2" "5"
"B"  "2" 
"C"  "3" 
"C"  "6" 

我们可以对数据集的第一列和“目标”向量之间的match使用order

df1[order(match(df1[,1], target)),]

-输出

#     [,1] [,2]
#[1,] "A1" "1" 
#[2,] "A1" "4" 
#[3,] "A2" "5" 
#[4,] "B"  "2" 
#[5,] "C"  "3" 
#[6,] "C"  "6" 

或者另一种选择是将第一列的levels设置为“目标”并order

df1[order(factor(df1[,1], levels = target)),]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM