R:基于不同长度的向量对数据帧进行排序

时间:2018-05-31 14:31:21

标签: r sorting

我想根据包含列的所有可能元素的向量对其中一个列进行数据框排序,但不重复。例如,像这样的表:

A   a
B   b
C   b
D   b
E   a
F   a
G   c
H   b

这样的矢量:c("b", "c", "a")

因此,基于此向量对第2列上的表进行排序将生成此表:

B   b
C   b
D   b
H   b
G   c
A   a
E   a
F   a

1 个答案:

答案 0 :(得分:1)

我们可以将matchorder

一起使用
df1[order(match(df1$v2, vec1)),]
#   v1 v2
#2  B  b
#3  C  b
#4  D  b
#8  H  b
#7  G  c
#1  A  a
#5  E  a
#6  F  a

数据

vec1 <- c("b", "c", "a")
df1 < structure(list(v1 = c("A", "B", "C", "D", "E", "F", "G", "H"), 
v2 = c("a", "b", "b", "b", "a", "a", "c", "b")), .Names = c("v1", 
  "v2"), class = "data.frame", row.names = c(NA, -8L))