You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言如何对逗号分隔的字符列值升序排序后仅保留第一个值

R 字符型ID列处理:逗号分隔值排序后取首个元素

你可以使用tidyverse套件或base R两种方案完成需求,代码如下:

步骤1:构造示例数据(可跳过,直接替换为你自己的df即可)

df <- data.frame(
  ID = c("2", NA, "1", "3", "4", "5,7", "9,6,10", "12", "15", "16", "17", NA, "19", "22,23"),
  stringsAsFactors = FALSE
)

方案1:tidyverse 解法(代码可读性更高)

library(tidyverse)

df_processed <- df %>%
  mutate(
    ID = map_chr(ID, function(x) {
      if (is.na(x)) return(NA_character_)
      str_split(x, ",")[[1]] %>% 
        as.integer() %>% 
        sort() %>% 
        head(1) %>% 
        as.character()
    })
  )

方案2:base R 解法(无需额外安装依赖包)

df$ID <- sapply(df$ID, function(x) {
  if (is.na(x)) return(NA)
  num_vec <- as.integer(unlist(strsplit(x, ",")))
  as.character(sort(num_vec)[1])
})

处理逻辑说明

  • 逐行遍历ID列的每个值,NA值直接保留不处理
  • 非NA值按逗号拆分后转换为整数,做升序排序
  • 提取排序后的第一个值,默认返回字符型,如果你需要数值型结果,将代码最后的as.character()替换为as.integer()即可

内容的提问来源于stack exchange,提问作者Dinho

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 04:51:03