【发布时间】:2020-05-29 16:56:29
【问题描述】:
我想订购一个基于字母数字变量的数据框。我的数据集如下所示:
sample.data <- data.frame(Grade=c(4,4,4,4,3,3,3,3,3,3,3,3),
ItemID = c(15,15,15,15,17,17,17,17,16,16,16,16),
common.names = c("15_AS_SA1_Correct","15_AS_SA10_Correct","15_AS_SA2_Correct","15_AS_SA3_Correct",
"17_AS_2_B2","17_AS_2_B1","17_AS_5_C1","17_AS_4_D1",
"16_AS_SA1_Negative","16_AS_SA11_Prediction","16_AS_SA12_UnitMeaning","16_AS_SA3_Complete"))
> sample.data
Grade ItemID common.names
1 4 15 15_AS_SA1_Correct
2 4 15 15_AS_SA10_Correct
3 4 15 15_AS_SA2_Correct
4 4 15 15_AS_SA3_Correct
5 3 17 17_AS_2_B2
6 3 17 17_AS_2_B1
7 3 17 17_AS_5_C1
8 3 17 17_AS_4_D1
9 3 16 16_AS_SA1_Negative
10 3 16 16_AS_SA11_Prediction
11 3 16 16_AS_SA12_UnitMeaning
12 3 16 16_AS_SA3_Complete
我需要按Grade 和ItemID 订购,然后按包含字母数字的common.names 变量订购。
我用过这个:
sample.data.ordered <- sample.data %>%
arrange(Grade, ItemID,common.names)
但它不适用于整个系列。
我想要的输出是:
> sample.data.ordered
Grade ItemID common.names
1 3 16 16_AS_SA1_Negative
2 3 16 16_AS_SA3_Complete
3 3 16 16_AS_SA11_Prediction
4 3 16 16_AS_SA12_UnitMeaning
5 3 17 17_AS_2_B1
6 3 17 17_AS_2_B2
7 3 17 17_AS_4_D1
8 3 17 17_AS_5_C1
9 4 15 15_AS_SA1_Correct
10 4 15 15_AS_SA2_Correct
11 4 15 15_AS_SA3_Correct
12 4 15 15_AS_SA10_Correct
有什么想法吗? 谢谢!
【问题讨论】:
-
在您的示例数据中,
17与16_AS_SA1_Negative相关联,16与17_AS_2_B2相关联。您是否尝试对行重新排序或单独对每一列进行排序? -
你是对的,对不起,我现在更正了。你现在能检查一下吗?感谢您的细心!
-
我本来打算推荐
gtools::mixedorder(),但它对于这种情况不够灵活......尽管它可能与separate()一起工作...... -
Ia 实际上尝试了
gtools::mixedorder(),但这并没有提供预期的结果。感谢您的建议。
标签: r sorting alphanumeric