Я объединяю несколько больших CSV-файлов с временем прибытия (ATA) и отправления (ATD) объектов. После объединения файлов я не могу удалить <NA>
строки, используя привычные методы. Происхождение может быть в различии между файлами Windows и Unix в новой строке и возврате каретки. Но я не хочу изменять файлы CSV. Я хочу иметь возможность исправить кадр данных в R.
Я объединяю несколько больших CSV-файлов, содержащих одинаковые переменные, например ::1004
# read csv files
df1 <- read.csv("data_1.csv", stringsAsFactors = FALSE)
df2 <- read.csv("data_2.csv", stringsAsFactors = FALSE)
df3 <- read.csv("data_3.csv", stringsAsFactors = FALSE)
# combine csv files
combidat <- rbind(df1, df2, df3)
# remove duplicate entries
combidat <- combidat[!duplicated(combidat), ]
Чтобы удалить записи с <NA>
в идентификаторе (первая переменная столбца), я использую одну из нескольких:
combidat <- combidat[!is.na(combidat$ID),]
combidat <- combidat[complete.cases(combidat[ , 1]),]
combidat <- combidat[rowSums(is.na(combidat)) != ncol(combidat),]
Я также нашел:
combidat <- combidat[-which(apply(combidat,1,function(x)all(is.na(x)))),]
Но я не могу использовать этот подход. Если я это сделаю, combidat
станет пустым.
Если я проверю результат:
combidat[is.na(combidat$ID),]
Я получаю:
[1] ID ATA ATD object
<0 rows> (or 0-length row.names)
Однако, если я проверяю несоответствия, то есть время отправления до времени прибытия:
combidat[(ATD<ATA),]
Я получаю:
ID ATA ATD object
233 51586002 2016-03-14 09:44:00 2016-03-14 09:00:00 car718
798 54846070 2016-06-19 01:37:00 2016-04-07 23:59:00 car276
4126 56066767 2016-03-31 14:00:00 2016-03-30 07:00:00 car089
NA NA <NA> <NA> NA
NA.1 NA <NA> <NA> NA
NA.2 NA <NA> <NA> NA
NA.3 NA <NA> <NA> NA
NA.4 NA <NA> <NA> NA
NA.5 NA <NA> <NA> NA
NA.6 NA <NA> <NA> NA
NA.7 NA <NA> <NA> NA
Я надеюсь получить:
ID ATA ATD object
233 51586002 2016-03-14 09:44:00 2016-03-14 09:00:00 car718
798 54846070 2016-06-19 01:37:00 2016-04-07 23:59:00 car276
4126 56066767 2016-03-31 14:00:00 2016-03-30 07:00:00 car089
Любое объяснение, что я делаю неправильно и как это исправить, было бы очень признательно.
[Дополнение 28 июня 2019 г.]
Что-то не так с импортированными CSV-файлами. Каким-то образом переводы строк / переносов возвращаются в поле данных, интерпретируются как маркеры конца записи. Я жонглировал цитатой:
df1 <- read.csv("data_1.csv", stringsAsFactors = FALSE, quote = "\"'")
И это имеет какое-то влияние, но я не правильно понимаю.