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

如何在R中按固定字符位置拆分数据集的code变量为school和class

按固定位置拆分字符型变量的解决方案

针对你需要从固定长度的code变量中按位置拆分出school(前两位)和class(第三、四位)的需求,以下几种R语言方案可以精准实现:

方案一:Base R原生方法(无需额外包)

直接使用substr()函数截取指定位置的字符,操作简单高效:

# 截取前两位作为school
df$school <- substr(df$code, start = 1, stop = 2)
# 截取第三、四位作为class
df$class <- substr(df$code, start = 3, stop = 4)

方案二:调整datawizard包的参数

你之前使用data_separate时误用了separator参数,该参数用于指定分隔符的位置,而按固定位置拆分应使用positions参数:

library(datawizard)
df <- data_separate(
  df,
  select = code,
  new_columns = c("school", "class", "student_id"), # 拆分出三部分,最后两位为学生编号
  positions = c(2, 4), # 在第2位、第4位字符后拆分
  append = TRUE
)
# 若不需要学生编号,可直接删除该列
df$student_id <- NULL

方案三:tidyverse风格的stringr包实现

如果习惯使用管道操作,stringr包的str_sub()语法更直观:

library(stringr)
library(dplyr)

df <- df %>%
  mutate(
    school = str_sub(code, 1, 2),
    class = str_sub(code, 3, 4)
  )

以上所有方案均针对字符型变量操作,能完整保留code中的前导零,符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 17:07:42