Как читать только данные снизу указанной c строки текста - PullRequest
0 голосов
/ 28 апреля 2020

Я обычно работаю с файлами .txt, которые содержат сотни строк ненужного текста в начале файла. Этот текст отображается над табличными данными, которые мне нужно проанализировать в R. Число строк несоответствующего текста никогда не бывает одинаковым между двумя файлами. Тем не менее, всегда есть одна идентичная строка текста в конце несоответствующего содержимого и до начала табличных данных (т. Е. «ID Only Records:»).

Мне нужно проанализировать / извлечь все данные в столбцах «Дата», «Время», «Канал», «Идентификатор тега», «Антенна» и «Питание»

enter image description here

Ответы [ 2 ]

0 голосов
/ 28 апреля 2020

Мы можем использовать grep с system командами, чтобы использовать это в skip и читать данные с read.table

read.table('temp.txt', skip =
      as.integer(system('grep -n Date temp.txt|cut -d: -f 1', intern = TRUE))-1,
                header = TRUE)
#      Date     Time Channel TagID Antenna Power
#1 02/17/20 12:57:50       1    61       1    90
#2 02/17/20 12:57:55       1    61       1    90
#3 02/17/20 12:58:00       1   999       2    55
#4 02/17/20 12:58:05       1   999       2    58
#5 02/17/20 12:58:10       1   999       2    57
#6 02/17/20 12:58:15       1    61       3    87
0 голосов
/ 28 апреля 2020

Поскольку вы не знаете, сколько строк нужно пропустить заранее, мы можем использовать readLines, чтобы прочитать весь текст из файла. Найдите номер строки, используя grep текст 'ID only records :' и начните читать данные из этой строки, свернув текст в одну строку.

temp <- readLines('temp.txt')

output <- read.table(text = paste0(trimws(temp[(
                 grep('ID only records :', temp) + 1) : length(temp)]), 
                collapse = "\n"), header = TRUE)
...