Проблемы с чтением в CSV с разделителями трубы со специальными символами в R - PullRequest
0 голосов
/ 26 марта 2020

Я пытался прочитать в файле с разделителями трубы, содержащем 96 переменных, о некоторых добровольных данных о качестве воды. Случайно в файле есть одинарные и двойные кавычки, а также точки с запятой, тире, косые черты и, вероятно, другие специальные символы

Имя: Джонатан "Джо" Смит; Джерри; Эмили; et c.

Из вывода нескольких переменных (например, IsNewVolunteer) кажется, что имеет проблемы с чтением данных. IsNewVolunteer всегда должно быть Y или N, но появляются цифры, и когда я запрашиваю эти строки, кажется, что данные сдвигаются. Переменные, которые явно не являются именами, находятся в столбцах Firstname и lastname.

Shifted data columns

Исходный формат данных делает его немного трудным для просмотра и устранения неполадок, особенно из-за дополнительных переменных. Я бы нашел способ их удалить, но цель работы с R состоит в том, чтобы предоставить код, который сможет работать с часто обновляемым набором данных.

Original Dataset

Я пробовал

read.table("dnrvisualstream.csv",sep="|",stringsAsFactors = FALSE,quote="")

Но это приводит к следующей ошибке:

Ошибка сканирования (файл = файл, что = что, сеп = sep, quote = quote, de c = de c,: в строке 132 не было 94 элементов

Однако в строке 132 нет ничего необычного, что я заметил У меня больше успехов с

read.csv("dnrvisualstream.csv",sep="|",stringsAsFactors = FALSE,quote="")

, но это все равно вызывает смещения и ошибки, как обсуждалось выше. Есть ли что-то, что я делаю неправильно? Любая информация будет полезна.

1 Ответ

0 голосов
/ 26 марта 2020

Я думаю, что это одна из двух проблем:

Кодировка UTF-8 или UTF-16:

Попробуйте это ...

read.csv("dnrvisualstream.csv", sep = "|", stringsAsFactors = FALSE, quote = "", encoding = UTF-8)

или это ...

read.csv("dnrvisualstream.csv", sep = "|", stringsAsFactors = FALSE, quote = "", encoding = UTF-16)

Слишком много разделителей:

Если это не сработает, щелкните правой кнопкой мыши файл .csv и откройте его в текстовом редакторе. У вас есть несколько |||| разделителей в строках 2,3,4 и 21,22, которые видны на вашем скриншоте. Нажмите CTRL+H, чтобы найти и заменить:

Find: ||||
Replace: |

Сохраните новый файл и попробуйте снова открыть в R.

...