我想根据包含列的所有可能元素的向量对其中一个列进行数据框排序,但不重复。例如,像这样的表:
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
答案 0 :(得分:1)
我们可以将match
与order
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))