【发布时间】:2020-08-28 10:56:54
【问题描述】:
假设我有(非常简单的例子):
df <- data.frame(factor_name = c("fac_Y", "fac_Y", "fac_Y", "fac_X", "fac_X", "fac_X", "fac_X", "fac_X", "fac_X"),
factor_level = c("cherry", "apple", "peach", 2, 1, 3, 4, 6, 8),
value = c(1, 3, 2, 6, 3, 4, 1, 5, 2))
我需要根据factor_name 和factor_level 对df 进行排序不依赖字母/数字顺序(因为在我正在处理的更复杂的情况下,排序顺序是与这些事情完全无关)这样:
(i) factor_name 应该排序为(fac_X, fac_Y)
(ii) 在fac_X 内,factor_level 排序顺序应为(1, 2, 3, 4, 6, 8)
(iii) 在fac_Y 内,factor_level 排序顺序应为("apple", "peach", "cherry")
所以我需要手动提供有关我想要的顺序的信息(即上面的 (i)-(iii)),但我不确定该怎么做。
因此我希望我的输出是:
df_sorted <- data.frame(factor_name = c("fac_X", "fac_X", "fac_X", "fac_X", "fac_X", "fac_X", "fac_Y", "fac_Y", "fac_Y"),
factor_level = c(1, 2, 3, 4, 6, 8, "apple", "peach", "cherry"),
value = c(3, 6, 4, 1, 5, 2, 3, 2, 1))
有人可以帮忙吗? 谢谢。
【问题讨论】:
-
也可以:
df[order(df$factor_name,df$factor_level,df$value),]