首页 > 解决方案 > 我可以按字符串/值的最后一部分对列(字符)进行排序吗?

问题描述

我有一个带有列(字符)的 data.frame,其中包含一个值列表,例如(前缀是指季节,后缀是一年):

Wi_1984,
Su_1985,
Su_1983,
Wi_1982,
Su_1986,
Su_1984,

我想保持列类型和格式不变,但我想做的是按该列按季升序对 df 进行排序。所以我想制作:

Wi_1982,
Su_1983,
Su_1984,
Wi_1984,
Su_1985,
Su_1986,

使用正常排序将按 Wi_ 或 Su_ 而不是按 _1984 即 _year 排列。非常感谢任何帮助。如果这可以在 dplyr / tidyverse 中完成,那就太好了。

标签: r

解决方案


要根据@zx8754 评论回答,你可以这样做,

library(dplyr)

df %>% 
 separate(X1, into = c('season', 'year')) %>% 
 arrange_at(vars(c(2, 1)))

这使,

# A tibble: 6 x 2
  season year 
  <chr>  <chr>
1 Wi     1982 
2 Su     1983 
3 Su     1984 
4 Wi     1984 
5 Su     1985 
6 Su     1986

推荐阅读