首页 > 解决方案 > 在 NA 值之后读取带有未指定尾随空格的 csv

问题描述

我有一组 csv 文件,其中缺失值 (NA) 后跟整个文件的可变数量的空格。

将这些值正确解释为 NA 而不是字符的最佳方法是什么?

以下是我正在处理的数据的示例以及我尝试过的内容。在 na.strings 参数中使用正则表达式似乎不起作用。

请注意,空格总是尾随 - 如果这有帮助的话!

x = data.frame(id = 1:5, missing = c(NA, "NA ", "NA  ", "NA    ", "NA                "), 
               stringsAsFactors = FALSE)
write.csv(x, 'NA_test.csv')

read.csv('NA_test.csv', na.strings = c("NA[[:space:]]+"), header = TRUE, stringsAsFactors = FALSE)

标签: r

解决方案


read.csv忽略一些参数,所以你必须使用 read.table。不幸的是,na.string不评估正则表达式。此外,仅从未引用的字符串strip.white = TRUE中删除空格。这是您可以使用.read.table

read.table('~/NA_test.csv', header = TRUE, sep = ",", na.strings = c(NA, "NA ", "NA  ", "NA    ", "NA                "), stringsAsFactors = FALSE)
  id missing
1  1      NA
2  2      NA
3  3      NA
4  4      NA
5  5      NA

推荐阅读