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

如何在R语言中拆分双位数数值元素?

拆分双位数向量生成两列的简便方法

我有一个由双位数元素组成的向量,已将其放入数据框中。请问是否有简便方法拆分这些元素?例如如何基于向量中的数值生成两个额外列,如将23拆分为2和3?

combination <- c(11, 12, 13, 14, 15, 16, 23, 24, 25, 26, 34, 35, 36, 45, 46, 56) # How to do it smartly?
crop.combinations <- rep(combination, each=num.rep)

方法一:基础R数学运算(高效简洁)

直接通过数学运算拆分十位和个位,无需字符串转换,适合纯数值向量,大向量场景下速度优势明显:

# 将重复后的向量转为数据框
df <- data.frame(comb = crop.combinations)
# 提取十位:整除10
df$tens <- df$comb %/% 10
# 提取个位:取余10
df$units <- df$comb %% 10

方法二:字符串拆分法(直观易懂)

把数值转为字符串后拆分,适合需要处理特殊格式的场景:

df <- data.frame(comb = crop.combinations)
# 转为字符串并按字符拆分
split_vals <- strsplit(as.character(df$comb), "")
# 将拆分结果合并到原数据框
df <- cbind(df, do.call(rbind, split_vals))
# 重命名列名
colnames(df)[2:3] <- c("tens", "units")
# 可选:将字符型结果转回数值型
df$tens <- as.integer(df$tens)
df$units <- as.integer(df$units)

方法三:tidyverse工具链(代码流畅)

如果习惯使用tidyverse系列包,可借助separate函数一步完成拆分与类型转换:

library(tidyverse)

df <- tibble(comb = crop.combinations) %>%
  # 将comb转为字符串,从第1个字符后拆分,自动转换为数值型
  separate(as.character(comb), into = c("tens", "units"), sep = 1, convert = TRUE)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 02:51:02