按指定顺序对R数据帧进行排序
假设我有(非常简单的例子): 有人能帮忙吗?按指定顺序对R数据帧进行排序,r,sorting,R,Sorting,假设我有(非常简单的例子): 有人能帮忙吗? 谢谢。我们可以使用指定了级别的因子 library(dplyr) df %>% arrange(factor_name, factor(factor_level, levels = c(1, 2, 3, 4, 6, 8, 'apple', 'peach', 'cherry'))) # factor_name factor_level value #1 fac_X 1 3 #2
谢谢。我们可以使用指定了
级别的因子
library(dplyr)
df %>%
arrange(factor_name, factor(factor_level,
levels = c(1, 2, 3, 4, 6, 8, 'apple', 'peach', 'cherry')))
# factor_name factor_level value
#1 fac_X 1 3
#2 fac_X 2 6
#3 fac_X 3 4
#4 fac_X 4 1
#5 fac_X 6 5
#6 fac_X 8 2
#7 fac_Y apple 3
#8 fac_Y peach 2
#9 fac_Y cherry 1
定义正确顺序后,可以使用match
library(dplyr)
correct_order <- c(1, 2, 3, 4, 6, 8, "apple", "peach", "cherry")
df %>% arrange(factor_name, match(factor_level, correct_order))
# factor_name factor_level value
#1 fac_X 1 3
#2 fac_X 2 6
#3 fac_X 3 4
#4 fac_X 4 1
#5 fac_X 6 5
#6 fac_X 8 2
#7 fac_Y apple 3
#8 fac_Y peach 2
#9 fac_Y cherry 1
请注意,正确的\u顺序
应先为“fac\u X”
设置值,然后为“fac\u Y”
设置值并不重要。它可以是任何顺序,只要它们之间的值保持不变。因此,上述答案将给出相同的输出:
correct_order <- c("apple", "peach", "cherry", 1, 2, 3, 4, 6, 8)
correct\u order它也可以工作:df[order(df$factor\u name,df$factor\u level,df$value),
这不是依赖于能够按照与fac\u X
相同的顺序排序fac\u Y
?总的来说,我不能在这里做出这样的假设。每个因素都有其特定的顺序。@Alan你是否有完全不同的层次,或者你是否有一个层次与另一个完全不同的方向相反的情况-将修改OP以更清楚地显示是的,好的,我现在可以看到逻辑了。明天我会再玩一些。谢谢。我认为这是可行的(在我刚刚尝试过的一个更复杂的例子中仍然有效)。非常感谢。
library(dplyr)
correct_order <- c(1, 2, 3, 4, 6, 8, "apple", "peach", "cherry")
df %>% arrange(factor_name, match(factor_level, correct_order))
# factor_name factor_level value
#1 fac_X 1 3
#2 fac_X 2 6
#3 fac_X 3 4
#4 fac_X 4 1
#5 fac_X 6 5
#6 fac_X 8 2
#7 fac_Y apple 3
#8 fac_Y peach 2
#9 fac_Y cherry 1
df[with(df, order(factor_name, match(factor_level, correct_order))), ]
correct_order <- c("apple", "peach", "cherry", 1, 2, 3, 4, 6, 8)