У меня есть файл с разделителями, в котором есть ошибки, когда он был выгружен в плоский файл.Несколько записей были перенесены и переполнение было сохранено в виде новой строки.
Table A
имеет размеры n x 25
- Каждая запись заключена в
"
- Некоторые записи разбиты на 3 строки по 8, 17и 3 столбца .
Визуальные материалы для лучшего понимания того, что я пытаюсь объяснить:
"|A|B|C|D|E|F|...|X|Y|"
[1] "|1|2|3|2|1|1|...|4|1|"
[2] "|2|3|4|4|5|1|...|0|0|"
[3] "|8|7|6|7|...
[4] |7|9|1|....
[5] |2|3|7|"
Обратите внимание на то, что должно было быть, ТаблицаA [3] теперь разделенав строки с 3 по 5, и только строки 3 и 5 заключены в кавычки.
Я использовал read_delim из пакета readr
со следующими параметрами
##Attempt 1
read_delim("data/TableA.txt",delim = "|",col_names = T)
## Strangely resulting in an nx1 table, without any parsing done.
##Attempt 2
read_delim("data/TableA.txt",delim = "|",col_names = T,quote="")
## Results in a parsed nx25 tibble like this:
\"A B C D E F ... X Y\"
\"1 2 3 2 1 1 ... 4 1\"
\"2 3 4 4 5 1 ... 0 0\"
\"8 7 6 7
7 9 1
2 3 7\" "
problems(TableA) ##outputs:
# A tibble: 6 x 5
row col expected actual file
<int> <chr> <chr> <chr> <chr>
1 26 NA 26 columns 8 columns 'data/TableA.txt'
2 27 NA 26 columns 17 columns 'data/TableA.txt'
3 28 NA 26 columns 3 columns 'data/TableA.txt'
4 160 NA 26 columns 8 columns 'data/TableA.txt'
5 161 NA 26 columns 17 columns 'data/TableA.txt'
6 162 NA 26 columns 3 columns 'data/TableA.txt'
Обратите внимание на q-марки в начале и конце имен первой и последней переменных соответственно и одинаковые для ее значений.Когда я пытался quote='"'
или quote="\""
получить те же результаты, что и Attempt 1
.
Я хотел бы знать, есть ли способ решить эту проблему путем параметризации readr::read_delim
правильно
РЕДАКТИРОВАТЬ: Это вывод для dput(readLines("data/TableA.txt"))
Я "хэшировал" некоторые данные из соображений конфиденциальности.
Элемент 1 и 5верны по форме.2 -> 4 представить проблему, как описано.
c("\"8x9|x|x|x|x|x|x|47|SDPA|Colmados|COMERCIAL||||||Unknown|Unknown|Unknown|HAINA|SANTO DOMINGO|||47|809|x\"",
"\"8x9|x|x|x|SECUNDARIO|x|x|15",
"|SDPA|x|||x||0x2xx8|xxx6|Unknown|Unknown|Unknown|xS|SxxGO|||15",
"|8x9|xx4\"", "\"809|3xx00|xx|Sxx|PRINCIPAL|DISTRITO NACIONAL|xxxx|86|SDPA|Bexxs|COMERCIAL||vexsxxcom|www.axx.do|00x54|1xx-7|$0 - $5M|0 - 25|$0 - $500K|LOxS|Santo Domingo|||86|8xx9|33xx0\""
)