根据另一列的数值设置因子的级别

bos*_*hek 1 r

我一直在试图弄清楚如何根据同一 data.frame 中另一列的值对因子进行排序。我一直在用这个问题作为我努力的基础:

R - 根据一个或多个其他列中的值对因子进行排序

在我的示例中,我喜欢ftorset by的级别order_IDorder_ID只是订单的一个等级。这是我到目前为止所拥有的:

df <- data.frame(order_ID=c(5,3,1,4,2),
           ftor=LETTERS[1:5])


df$ftor <- factor(df$ftor, levels=df[order(df$order_ID),], ordered=TRUE)
Run Code Online (Sandbox Code Playgroud)

这是我在上述尝试后尝试关卡时得到的结果:

> levels(df$ftor)
[1] "c(1, 2, 3, 4, 5)" "c(3, 5, 2, 4, 1)"
Run Code Online (Sandbox Code Playgroud)

基于order_ID这里的价值是我所期待的:

> levels(df$ftor)
[1] "C" "B" "E" "D" "A"
Run Code Online (Sandbox Code Playgroud)

总之,任何人都可以推荐一种方法,我可以使用一列的级别来设置同一 data.frame 中另一个因素的级别?

bos*_*hek 6

这里的答案实际上由@RichScriven 提供是我没有设置我想要的列的顺序 ( df$ftor) 而是整个 data.frame ( df)。此外,索引是不稳定的。所以最终我替换了这个:

df$ftor <- factor(df$ftor, levels=df[order(df$order_ID),], ordered=TRUE)
Run Code Online (Sandbox Code Playgroud)

有了这个:

df$ftor <- factor(df$ftor, levels=df$ftor[order(df$order_ID)], ordered=TRUE)
Run Code Online (Sandbox Code Playgroud)