基于字符向量重新排序数据帧

Eco*_*Tom 2 r vector dataframe

我认为这应该很简单,但我找不到办法做到这一点。

我想根据一个因素重新排序数据帧。到目前为止我能找到的所有答案都提供了逻辑排序,但这是任意的,并且是数字和字母的混合。也许这是一个问题,因为它factor不是vector? 但是对于向量的答案似乎也没有任何作用。

任何建议将不胜感激!

示例数据(注意;此数据仅用于此问题,在我的真实代码中,数据框是其他一些计算的输出,因此我不能在一开始就将名称更改为合理的名称)

DATA<- data.frame(This=c("120", "60", "90", "OG"), That=c(453, 679,12,252))

DATA

  This That
1  120  453
2   60  679
3   90   12
4   OG  252
Run Code Online (Sandbox Code Playgroud)

我想按 60 - 90 - 120 - OG 的顺序对其进行排序,即

  This That
1  60   679
2  90   12
3  120  453
4  OG   252
Run Code Online (Sandbox Code Playgroud)

编辑:这不是一个重复的问题。如上所述,在下面的评论中,排序是任意的。字典排序假设行名称是相互关联的,但这里并非如此。我可以标记行("unicorn", "18.1", "TREES", "234234235")并希望它们按顺序排列("234234235", "unicorn", "TREES", "18.1")

lmo*_*lmo 6

您可以使用factor变量调整顺序,如下所示:

DATA$This <- factor(DATA$This, levels=c("60", "90", "120", "OG"))
Run Code Online (Sandbox Code Playgroud)

请注意,这不会更改标签值:

DATA
  This That
1  120  453
2   60  679
3   90   12
4   OG  252
Run Code Online (Sandbox Code Playgroud)

但它会更改映射到这些标签的底层整数,以便您可以根据需要对数据进行排序:

DATA[order(DATA$This),]
  This That
2   60  679
3   90   12
1  120  453
4   OG  252
Run Code Online (Sandbox Code Playgroud)