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

如何用R的tidyr::separate按算术/比较运算符拆分数据列?

解决R语言拆分数据框labels列的问题

你需要的正则表达式是([<>+-]),同时需要补充空值替换步骤(separate拆分后空内容会生成空字符串,而目标是NA_character_),完整代码如下:

library(dplyr)
library(tidyr)

pre = data.frame(labels = c("<0", "0-2", "3-3", "4-5", "6+"))

pre %>%
  separate(col = labels,
           into = c("LHS", "RHS"),
           sep = "([<>+-])",  # 匹配<、>、+、-这类运算符作为拆分分隔符
           remove = FALSE,    # 保留原labels列
           fill = "right") %>% # 处理运算符在末尾的情况,右侧补空字符串
  mutate(across(c(LHS, RHS), ~na_if(., ""))) -> post # 将空字符串转为NA

# 查看结果
post

关键说明:

  • 正则([<>+-])精准匹配需要拆分的算术/比较运算符,作为拆分依据;
  • fill = "right"确保像6+这种运算符在末尾的内容拆分后,右侧位置能得到空字符串,方便后续转为NA;
  • na_if(., "")将拆分产生的空字符串替换为目标要求的NA_character_。

运行后生成的post数据与你给出的目标数据完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 15:10:59