如何对R中dataframe指定列内逗号分隔值按字母顺序排序
R实现dataframe指定列的逗号分隔内容按字母排序
首先构造和你需求一致的示例数据:
df <- data.frame( id = c(1, 2), Q1 = c("alpha,charlie,apple", "zulu,delta,bravo"), Q2 = c("B,D,C,A", "D,A,C,B"), stringsAsFactors = FALSE )
定义单个字符串的处理函数,功能为拆分逗号分隔值、按字母排序、重新拼接为逗号分隔字符串:
sort_comma_content <- function(col) { sapply(strsplit(col, split = ","), function(item) paste(sort(item), collapse = ",")) }
指定需要处理的列,批量应用函数即可得到目标结果:
# 基础R实现 target_cols <- c("Q1", "Q2") df[target_cols] <- lapply(df[target_cols], sort_comma_content) # 如果你习惯用tidyverse套件,可使用如下写法 library(dplyr) df <- df %>% mutate(across(all_of(target_cols), sort_comma_content))
注意:如果你的数据列是因子类型,需要先转为字符型再处理,避免排序异常。
内容的提问来源于stack exchange,提问作者piper180
相关产品推荐
相关产品推荐

