Считайте файл .txt в R с разделителем табуляции и каждым столбцом, начинающимся с нечислового значения - PullRequest
1 голос
/ 09 мая 2019

У меня есть уникальный текстовый файл с нечисловыми фразами в качестве заголовков столбцов, числовыми векторами с разделителями табуляции в качестве значений в каждом векторе, но нечисловые заголовки примыкают к окончательному числовому значению в каждом векторе. Следующий пример ниже (text_file) напоминает простую версию этого. Файл сохраняется как файл 'txt', и я хочу получить его в формате матрицы или data.frame в R (пример предоставляет желаемый формат). У кого-нибудь есть идеи, как это сделать?

Я пробовал разные вещи, но не совсем уверен, как подойти к этому

text_file <- 'cat .210 -.123 .456dog 1.22 2.32 3.33\'\'\ 4.11 .021 .000'
#then, assume that is saved as a '.txt' file in directory
data <- read.table ('text_file.txt')

#desired output looks like so#
what_data_should_resemble = as.data.frame(matrix( c(.210, -.123, .456, 1.22, 2.32, 3.33, 4.11, .021, .000), 
                             nrow=3,              
                             ncol=3,              
                             byrow = TRUE))
colnames(what_data_should_resemble) <- c('cat', 'dog', '')
what_data_should_resemble

1 Ответ

2 голосов
/ 09 мая 2019

Вы можете прочитать данные, используя readLines(), затем заменить имена столбцов новой строкой и снова прочитать их как read.table().

text_to_read <- 'cat .210 -.123 .456dog 1.22 2.32 3.33\'\'\ 4.11 .021 .000'

text <- readLines(textConnection(text_to_read))

read.table(text=gsub("cat|dog|''", "\n", text), col.names = c("cat", "dog", "x"))

   cat    dog     x
1 0.21 -0.123 0.456
2 1.22  2.320 3.330
3 4.11  0.021 0.000

Как указывает @thelatemail, вы можете абстрагировать это для обработки произвольного числа столбцов с помощью регулярных выражений.

read.table(text=gsub("[^\\d.\\-\\s]+", "\n", text, perl = TRUE))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...