R语言使用dplyr基于指定列对dataframe进行排序的方法咨询
你可以通过以下两种常用方式实现排序需求:
基础R方案
如果要按照你示例中col2的自定义顺序(d→a→c→b)排序,先指定排序优先级再调用order()函数即可:
# 定义col2的排序顺序 sort_level <- c("d", "a", "c", "b") # 排序 df_sorted <- df[order(factor(df$col2, levels = sort_level)), ]
如果需要常规的字母顺序排序,直接调整参数即可:
# 字母升序排序 df_asc <- df[order(df$col2), ] # 字母降序排序 df_desc <- df[order(-xtfrm(df$col2)), ]
如果你需要和示例结果的time、col1列完全匹配,只需要把上述代码中的col2替换为col1即可,你提供的示例结果大概率存在col2列的手误。
dplyr(tidyverse)方案
使用arrange()函数语法更简洁:
library(dplyr) # 自定义顺序排序 sort_level <- c("d", "a", "c", "b") df_sorted <- df %>% arrange(factor(col2, levels = sort_level)) # 升序排序 df_asc <- df %>% arrange(col2) # 降序排序 df_desc <- df %>% arrange(desc(col2))
内容的提问来源于stack exchange,提问作者LDT
相关产品推荐
相关产品推荐

