使用R中的外部因子排序对数据帧进行排序
一个琐碎的问题。简单的例子。假设我有以下几点:使用R中的外部因子排序对数据帧进行排序,r,dataframe,sorting,R,Dataframe,Sorting,一个琐碎的问题。简单的例子。假设我有以下几点: df <- data.frame(x = as.factor(1:10), y = rnorm(10, 0, 1)) x_order = c("3", "1", "5", "7", "8", "9", "2", "6", "10", "4") df我们可以将“x_顺序”转换为整数并用作行索引 df1 <- df[as.integer(x_order),] 或者将“x”列转换为因子,并将级别指定为“
df <- data.frame(x = as.factor(1:10),
y = rnorm(10, 0, 1))
x_order = c("3", "1", "5", "7", "8", "9", "2", "6", "10", "4")
df我们可以将“x_顺序”转换为整数
并用作行索引
df1 <- df[as.integer(x_order),]
或者将“x”列转换为因子
,并将级别
指定为“x顺序和do顺序”`
df[order(factor(df$x, levels = x_order)),]
这里是另一个基本R解决方案,您可以使用df
的rownames
对df
的行重新排序,即
dfout <- df[match(x_order,rownames(df)),]
如果x是分类的(如10个名字、10个星号等),这仍然有效吗?@Alan如果是x\u order@Alan也许match
会是你要找的,我看到你上面的一般案例评论。非常感谢。我将看看是否可以将该方法应用于更复杂的实际数据。@akrun好的,是的,我从示例中给出的特例中假设了它
dfout <- df[match(x_order,rownames(df)),]
> dfout
x y
3 3 0.08897425
1 1 0.96173905
5 5 0.81658185
7 7 0.19946419
8 8 -0.21296035
9 9 0.16236732
2 2 -0.32710972
6 6 0.11647613
10 10 0.26953532
4 4 1.17435024