Как использовать fread или read_delim в R для символов без перевода строки - PullRequest
0 голосов
/ 26 марта 2019

У меня есть несколько файлов .txt, которые необходимо импортировать в R в качестве кадров данных для некоторого анализа данных.Один из этих файлов не имеет EOL в какой-либо форме, поэтому мне интересно, как бы я мог импортировать это.

\"A\";\"B\";\"C\";\"D\";\"D\";\"E\";\"F\";\"G\";\"H\";\"I\";\"J\";\"K\";\"L\";\"M\";\"N\";\"O\";\"P\";\"Q\";\"R\";\"S\";\"T\";\"U\";\"V\"\"1\";4;\"55-555-5555-555\";1234-56-78;\"111\";1510;5;1234-12-17;12345.1234512345;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA\"2\";6;\"22-222-2222-222\";5678-56-78;\"222\";2051;0;NA;0;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA

Вот так выглядят первые ~ 500 символов этого файла .txt,EOL должен быть размещен так:

\"A\";\"B\";\"C\";\"D\";\"D\";\"E\";\"F\";\"G\";\"H\";\"I\";\"J\";\"K\";\"L\";\"M\";\"N\";\"O\";\"P\";\"Q\";\"R\";\"S\";\"T\";\"U\";\"V\"

\"1\";4;\"55-555-5555-555\";1234-56-78;\"111\";1510;5;1234-12-17;12345.1234512345;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA

\"2\";6;\"22-222-2222-222\";5678-56-78;\"222\";2051;0;NA;0;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA

Обычно я просто добавляю "\ n" в те места, где он мне нужен, но в тех местах, где я бы не находился, нет повторяющейся строкипоместите \ n, так что я не думаю, что gsub будет работать в этом случае.

Видя, как пропущенные значения четко обозначены с помощью NA, есть ли функция, похожая на read_delim, которая имеет "col_number = x"аргумент?Подобно тому, как первые значения x являются заголовками, следующие значения x являются значениями первой строки и так далее, и так далее?

Если это что-то изменит, эти файлы .txt довольно большие (> 300 МБ).

Большое спасибо Julian_Hn.Работает как шарм.

1 Ответ

1 голос
/ 26 марта 2019

Я бы, вероятно, просто прочитал это как вектор, а затем переформатировал бы как матрицу с количеством столбцов, которые, как вы знаете, находятся в наборе данных. По сути, это то, что вы хотите

str <- "\"A\";\"B\";\"C\";\"D\";\"D\";\"E\";\"F\";\"G\";\"H\";\"I\";\"J\";\"K\";\"L\";\"M\";\"N\";\"O\";\"P\";\"Q\";\"R\";\"S\";\"T\";\"U\";\"V\";\"1\";4;\"55-555-5555-555\";1234-56-78;\"111\";1510;5;1234-12-17;12345.1234512345;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;\"2\";6;\"22-222-2222-222\";5678-56-78;\"222\";2051;0;NA;0;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA;NA"

vec <- strsplit(str,";")[[1]]
//EDIT: add byrow = T To stay in the right format. Thanks Yuriy
table <- matrix(vec,ncol=23,nrow=3, byrow = T)
df <- as.data.frame(table)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...