R (Studio) 导入 xlsx/csv 并在每列基础上设置 NA/missing

R (Studio) Import xlsx/csv and set NA/missing on a per column basis

可能是一个简单的问题,我只是没有找到合适的关键字来回答。

我正在使用 R studio 并使用 readr(或带有 readxl 的 xlsx)导入提供的大型流行病学数据集(>40k 行,>200 个变量)的 csv大部头书。

library (readr)
DF <- read_csv("com16_NA.csv", na = "999")
## OR ## 
library(readxl)
DF <- read_excel("com16_NA.xlsx", na = "999")

我正在尝试在导入时设置缺失值,但是创建者已将缺失占位符设置为某些变量为 99,其他变量为 999(其中 99 是有效选项,例如重量),其他变量为 9999(其中 999 是可能的)。

有没有办法在导入时按列设置缺失值?现在我只能看到如何将整个数据集的单个值设置为缺失值(按照上面的代码)。

或者我最好的选择是在导入之前将电子表格中所有缺失的占位符转换为 NA

谢谢

read_csvread_excel 都接受 na 参数的字符向量,因此您可以输入:

DF <- read_csv("com16_NA.csv", na = c('', 'NA', '999'))

或包含您想要的任何其他值 NA。默认的 na 参数对于 read_csvna = c('', 'NA') 并且对于 read_excel

只是 ''

我会让创建者知道,缺失值代码适用于某些列而不适用于其他列是不好的做法!

在这种情况下,您可以使用 naniar 包中的 replace_with_na() 函数:

library(readr)
library(naniar)

DF <- read_csv("com16_NA.csv") %>%
  replace_with_na(replace = list(x = 99, y = 999))

其中 x 是缺失值设置为 99y 以及 999

的列名称