r - 我可以按字符串/值的最后一部分对列(字符)进行排序吗?
问题描述
我有一个带有列(字符)的 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 中完成,那就太好了。
解决方案
要根据@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
推荐阅读
- android - 了解 Android 日志垃圾收集器
- image - Matlab中的稻谷分割
- javascript - 使用 splice react native 从数组中删除对象元素
- webpack - 如何捆绑将在“new Function()”中调用的脚本
- python - 创建新中间件后,无法使用 JWT 令牌在 Django Rest Framework 自定义请求中间件中使用用户
- ios - 如何在 iOS 中使用 Sqllite 验证登录表单进入下一页?
- swift - SwiftUI:在 ObservableObject 模型视图中使用函数初始化数据时出错
- clojure - 有没有一种方法可以重用 EDN 中已定义键的值?
- javascript - JSON 会发展到原生支持 Ecmascript 地图对象吗?
- regex - 提取数字并将其附加到不同的单元格中?