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

在R语言中将含分数的多列文本拆分为多列的实现方法

问题解决:R语言分数列拆分与转换

错误原因分析

你提供的代码存在几个关键问题:

  • across语法错误:不能在across内部直接用=赋值生成新列,正确方式是通过list定义多列转换规则,配合.names参数指定新列名
  • 列名与列值混淆:.x在across中代表当前列的数值向量,不是列名,用paste0(.x, "Numerator")会把每个分数值和字符串拼接,而非生成列名
  • 函数参数错误:str_extract的第一个参数应该是.x(当前列),而非.
  • 代码未闭合:缺少mutate和across的闭合括号

正确实现代码

首先加载所需包,然后执行转换:

library(dplyr)
library(stringr)

# 原始数据框
df <- structure(list(Initial_Data = c("18/24", "4/24"), `3Mo_Data` = c("14/14", 
NA), `6Mo_Data` = c(NA, "6/14"), Irrelevant_Col1 = 1:0,     Irrelevant_Col2 = 1:0), class = "data.frame", row.names = c(NA, -2L))

# 处理分数列,生成小数、分子、分母列,保留无关列
result_df <- df %>%
  mutate(
    across(
      contains("Data"),
      list(
        # 提取分子并转为整数
        Numerator = ~ as.integer(str_extract(.x, "^\\d+")),
        # 提取分母并转为整数(匹配/后的数字)
        Denominator = ~ as.integer(str_extract(.x, "(?<=/)\\d+")),
        # 计算分数对应的小数,处理NA情况
        Decimal = ~ ifelse(is.na(.x), NA, as.integer(str_extract(.x, "^\\d+")) / as.integer(str_extract(.x, "(?<=/)\\d+")))
      ),
      # 新列命名规则:原列名_函数名(如Initial_Data_Numerator)
      .names = "{.col}_{.fn}"
    )
  ) %>%
  # 可选:调整列顺序,将Data相关列放在前面
  select(contains("Data"), everything())

输出结果

执行后result_df的结构如下:

Initial_Data 3Mo_Data 6Mo_Data Initial_Data_Numerator Initial_Data_Denominator Initial_Data_Decimal 3Mo_Data_Numerator 3Mo_Data_Denominator 3Mo_Data_Decimal 6Mo_Data_Numerator 6Mo_Data_Denominator 6Mo_Data_Decimal Irrelevant_Col1 Irrelevant_Col2
1        18/24    14/14      NA                      18                       24                  0.75                   14                    1                  1.00                    NA                     NA                  1               1
2         4/24      NA     6/14                       4                       24                  0.17                    NA                    NA                  NA                     6                     14                  0.43               0               0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 03:37:35