R导入CSV后对DataFrame的invoice_amount列求和返回NA问题
问题原因
sum(df$invoice_amount)返回NA的核心原因是:invoice_amount列中存在至少1个NA(缺失值)。
R语言sum()函数的默认参数为na.rm = FALSE,只要参与求和的向量中包含任意一个NA值,函数就会直接返回NA;你截取的前10行数据恰好没有NA值,所以可以正常得到求和结果。
验证方法
你可以通过以下代码确认缺失值的存在:
- 统计列中NA的总数量:
sum(is.na(df$invoice_amount))
如果返回结果大于0,即可确认列中存在缺失值。
2. 查看导入时的解析异常:
你调用read_csv导入数据后,返回的对象自带解析问题记录,运行以下代码即可查看哪些行的invoice_amount字段解析失败被转为NA:
problems(df)
通常这类缺失值是因为CSV对应行的invoice_amount字段不是合法数值,比如为空、填写了文本、特殊符号等。
解决方案
如果业务上允许忽略缺失值直接求和,只要在调用sum()时添加na.rm = TRUE参数即可:
sum(df$invoice_amount, na.rm = TRUE)
如果需要保证数据完整性,可以先根据problems(df)的输出定位CSV中的异常行,修正数据后重新导入再求和。
内容的提问来源于stack exchange,提问作者Ong K.S
相关产品推荐
相关产品推荐

