Я только что пережил огромную головную боль, вызванную тем, что read_csv испортил мои данные, заменив содержимое на NA при чтении простых и чистых CSV-файлов.
Я перебираю несколько больших CSV-файлов, которые составляют миллионы наблюдений. Некоторые столбцы содержат довольно много NA для некоторых переменных.
При чтении CSV, который содержит NA в определенном столбце для первых 1000 + x наблюдений, read_csv заполняет весь столбец NA и, таким образом, данные теряются для дальнейших операций.
Отображается предупреждающее сообщение «Предупреждение: ошибка синтаксического анализа», но, поскольку я читаю несколько файлов, я не могу проверить этот файл за файлом. Тем не менее, я не знал бы автоматического исправления проблемы синтаксического анализа, указанной также для проблем (x)
Использование read.csv вместо read_csv не вызывает проблемы, но это медленно, и я сталкиваюсь с проблемами кодирования (использование разных кодировок требует слишком много памяти для больших файлов).
Возможность преодолеть эту ошибку - добавить первое наблюдение (первую строку) к вашим данным, содержащее что-то для каждого столбца, но все же мне нужно как-то сначала прочитать файл.
См. Упрощенный пример ниже:
##create a dtafrane
df <- data.frame( id = numeric(), string = character(),
stringsAsFactors=FALSE)
##poluate columns
df[1:1500,1] <- seq(1:1500)
df[1500,2] <- "something"
# variable string contains the first value in obs. 1500
df[1500,]
## check the numbers of NA in variable string
sum(is.na(df$string)) # 1499
##write the df
write_csv(df, "df.csv")
##read the df with read_csv and read.csv
df_readr <- read_csv('df.csv')
df_read_standard <- read.csv('df.csv')
##check the number of NA in variable string
sum(is.na(df_readr$string)) #1500
sum(is.na(df_read_standard$string)) #1499
## the read_csv files is all NA for variable string
problems(df_readr) ##What should that tell me? How to fix it?