【发布时间】:2023-03-21 12:09:01
【问题描述】:
我有一个要以特定方式订购的向量。这些向量基于列名。我有一个州名列表。我还有一个由“_sub”表示的每个状态的子集,以及由“_pct”表示的每个列的计算。此外,还有一个名为“var”的元素以及用于国家级的元素“US”和“US_pct”。
这是一个可重现的数据集:
vec <- c("var", "NY", "AK", "UT", "US", "NY_sub", "UT_sub", "AK_sub", "AK_pct", "AK_sub_pct", "NY_sub_pct", "UT_sub_pct", "UT_pct", "NY_pct", "US_pct")
我希望各州通常按字母顺序排列。但他们也应该遵循州组内的另一个顺序。例如,“AK”集应该在“var”之后和“NY”集之前。在集合中,我想先显示“AK_sub”,然后显示“AK_sub_pct”,然后显示“AK”,然后显示“AK_pct”。然后每个其他状态都应该遵循相同的模式。 “美国”应该是最后但相同的一般顺序。也没有“US_sub”。
在运行代码之前,我也不知道向量中将包含哪些状态,因此我无法使用match 准确指定顺序。一般都要做。
按字母顺序排列的部分很简单:sort(var),但我不知道如何去做剩下的。
这是我想要的结果。欢迎dplyr 解决方案。
c("var", "AK_sub", "AK_sub_pct", "AK", "AK_pct", "NY_sub", "NY_sub_pct", "NY", "NY_pct", "UT_sub", "UT_sub_pct", "UT", "UT_pct", "US", "US_pct")
【问题讨论】: