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

如何用R移除dataframe指定列的字符值并提取数字?

解决方案:清理DataFrame指定列并提取数字

完整代码实现

# 还原原始数据框
df <- structure(list(company = c("Investments", "Debt", "Cash", "", ""), 
                     interest_rate = c("", "", "7.46", "8.44", ""), 
                     adjusted_cost = c("", "", "$", "", ""), 
                     adjusted_cost_2 = c("", "", "3,586 (EUR 3,381)", "3,564 (GBP 2,955)", "7,150"), 
                     market_value = c("", "", "$3,505 (EUR 3,578)", "3,450(GBP 3,090)", ""), 
                     market_value_2 = c("", "", "$3,505 (EUR 3,578)", "3,450(GBP 3,090)", "6,955")), 
                row.names = c(NA, 5L), class = "data.frame")

library(tidyverse)

# 自定义目标列(根据实际数据修改列名)
target_cols <- c("adjusted_cost", "adjusted_cost_2", "market_value", "market_value_2")

# 执行清理与提取操作
cleaned_df <- df %>%
  mutate(across(all_of(target_cols), ~ {
    # 移除括号及内部所有内容
    str_remove_all(., "\\s*\\(.*?\\)") %>%
    # 提取数字(自动忽略货币符号、千分位逗号)
    parse_number()
  }))

# 按期望格式输出(空值显示为空白)
print(cleaned_df, na.print = "")

关键步骤说明

  • 指定目标列:target_cols是需要处理的4列名称,可根据不同DataFrame灵活修改(比如换成c("cost", "cost_2", "value", "value_2"))。
  • 移除括号内容:用正则表达式\\s*\\(.*?\\)匹配并删除括号前的空格、括号及内部所有文本,仅保留括号外的内容。
  • 提取数字:parse_number()自动识别并提取有效数字,同时忽略货币符号(如$)、千分位逗号这类非数字字符;空字符串会转为NA,打印时通过na.print = ""显示为空白,与期望输出一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 20:30:42