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

R语言导入含多余头尾行的CSV银行对账单转double遇NA如何解决

问题原因

你的AMOUNT列原始值为带="前缀和"后缀的特殊字符格式(例如="17.58"),不属于标准数字格式,直接使用col_double()解析时无法识别非数字字符,因此全部返回NA。

解决方法

推荐优先使用「先读为字符、再清洗转换」的方案,逻辑简单且容错性更高:

  • 先按原有逻辑读取数据,保留AMOUNT列为字符型
  • 提取字符中的数字部分,再转换为double类型

示例代码如下:

library(readr)
library(dplyr)
library(stringr)

# 读取数据
df <- read_csv(
  files[1], 
  skip = 7, 
  col_types = cols_only(
    AMOUNT = col_character(), 
    `BILL REF NO.` = col_character()
  )
)

# 清洗转换AMOUNT列
df <- df %>%
  mutate(
    # 提取数字+小数点组合,再转为双精度数值
    AMOUNT = str_extract(AMOUNT, "\\d+\\.\\d+") %>% as.double()
  )

如果希望在读入阶段完成转换,也可以自定义列解析规则:

df <- read_csv(
  files[1], 
  skip = 7, 
  col_types = cols_only(
    AMOUNT = col_number(transform = function(x) str_remove_all(x, '[="]')),
    `BILL REF NO.` = col_character()
  )
)

内容的提问来源于stack exchange,提问作者Ong K.S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 08:36:02