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

在R语言中将含€、M/K的字符型列转换为整数并清理乱码

解决FIFA21薪资/身价数据的乱码清理与整数转换

核心思路

先清理乱码和货币符号,提取纯数字与单位(K/M),再根据单位换算成整数数值。

实现步骤与代码

1. 定义通用转换函数

这个函数可一次性完成乱码清理、单位识别和数值转换:

convert_currency <- function(x) {
  # 清理所有非数字、小数点、K/M的字符(含乱码、欧元符号)
  cleaned_str <- gsub("[^0-9.KM]", "", x)
  # 提取数值部分并转为数值型
  numeric_val <- as.numeric(gsub("[KM]", "", cleaned_str))
  # 根据单位确定换算系数
  multiplier <- ifelse(grepl("M", cleaned_str), 1000000, 1000)
  # 换算后转为整数
  as.integer(numeric_val * multiplier)
}

2. 应用函数到目标列

将函数分别作用于Wage、Value、Release Clause三列,替换原有列或生成新的整数列:

# 处理薪资列
fifa21_raw_data$Wage <- convert_currency(fifa21_raw_data$Wage)
# 处理身价列
fifa21_raw_data$Value <- convert_currency(fifa21_raw_data$Value)
# 处理解约金列
fifa21_raw_data$`Release Clause` <- convert_currency(fifa21_raw_data$`Release Clause`)

步骤解释

  • 乱码清理:用正则表达式[^0-9.KM]匹配所有非目标字符(包括乱码、欧元符号),直接替换为空,确保仅保留数字、小数点和单位标识K/M。
  • 数值提取:移除字符串中的K/M标识,将剩余内容转为数值型,例如67.5M提取为67.5。
  • 单位换算:通过grepl判断字符串是否包含M,包含则乘以1000000(百万),否则乘以1000(千)。
  • 整数转换:用as.integer将最终结果转为整数类型,满足需求的整数格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 04:35:08