Мне нужно написать код для обработки текстовых файлов с разделителями табуляции, в которых определены сегменты с переменной длиной в R.
Таблица, включенная в каждый сегмент, должна начинаться на 1 строку ниже «Group:» и заканчиваться либоНа 2 строки выше «~ End», если группа является элементом управления, или на 6 строк выше «~ End», если группа является стандартом.Длины самих таблиц будут переменными и могут быть пустыми, как сегмент "SpikedControl".
и файл примера выглядит следующим образом:
Group: Controls 1
Sample Wells Values MeanValue CV Od-bkgd-blank
Anti-Hu Det A11 2.849 2.855 0.282 2.853
A23 2.860
Coat Control A12 0.161 0.160 0.530 0.159
A24 0.160
Diluent Standard 1 A9 0.114 0.113 1.379 0.104
A21 0.112
Diluent Standard 2 A8 0.012 0.013 2.817 0.012
A20 0.013
~End
Group: SpikedControl 1
Sample Wells Concentration Values MeanValue CV ODbkgdblank Conc %Expected
~End
Group: Standards 1
Sample ExpConc Wells OD CV OD ODblank MeanODBlank Result %Recovery
St001 2000.000 B1 2.939 1.4 2.932 2.904 Range? Range?
B13 2.882 2.875 1153.779 57.689
St002 666.667 B2 2.820 0.9 2.812 2.829 456.435 68.465
B14 2.855 2.847 670.358 100.554
St003 222.222 B3 2.677 0.9 2.669 2.686 208.849 93.982
B15 2.709 2.702 237.852 107.033
St004 74.074 B4 2.215 1.4 2.205 2.226 72.185 97.449
B16 2.258 2.248 77.452 104.560
St005 24.691 B5 1.406 1.3 1.397 1.410 24.296 98.397
B17 1.433 1.424 25.153 101.868
St006 8.230 B6 0.669 2.9 0.658 0.672 7.781 94.536
B18 0.697 0.686 8.240 100.115
St007 2.743 B7 0.357 5.8 0.348 0.334 3.143 114.579
B19 0.329 0.320 2.759 100.579
St008 0.914 B8 0.198 3.7 0.191 0.186 1.029 112.551
B20 0.188 0.181 0.895 97.891
St009 0.305 B9 0.163 7.8 0.154 0.146 0.532 174.477
B21 0.146 0.137 0.296 97.190
St010 0.102 B10 0.130 5.1 0.123 0.119 0.096 94.087
B22 0.121 0.114 Range? Range?
St011 0.034 B11 0.133 4.7 0.126 0.122 0.134 394.778
B23 0.125 0.117 Range? Range?
St012 0.011 B12 0.117 0.7 0.105 0.104 Range? Range?
B24 0.115 0.104 Range? Range?
EC50 = 28.085
AUC = 5565.432
~End
Я не очень разбираюсь в обработке текстовых файлов, подобных этому, и ищу несколько советов о том, как подойти к идентификации этих сегментов и чтениюстолы внутри.
Спасибо!
Редактировать - ссылка на файл примера:
https://www.dropbox.com/s/4m0lmbbequmpd9b/ExampleFile.txt?dl=0
PS: эти файлы выплевываются из спектрофотометра, поэтому я нене имеет никакого контроля над форматом, так как программное обеспечение устарело.
Редактировать 2 - Достигнуть некоторого прогресса:
Прочитать в файле и получить начальную и конечную строки для каждого сегмента
inputtext <- readLines("ExampleFile.txt")
starts <- grep("Group:", inputtext)
ends <- grep("~End", inputtext)
, за которым я могу следовать
test2 <- read.table("ExampleFile.txt", header = T, sep = "\t", skip = 17, nrows = 24, blank.lines.skip = F)
сейчас я просто пытаюсь понять, как точно определить количество строк для чтения.
Таким образом, если начальная строка равна 17, а конечная строка равна 48. Тогда nrows необходимо 24, что равно 48 (указана последняя строка) - 17 (первые пропущенные строки) - 7 (для учетастрока заголовка и строки пуха на конце таблицы, которая также может быть 4, если это контрольная таблица)
Теперь мне просто нужно выяснить, как это зациклить и правильно определить, является ли группаконтроль или стандарт для вычитания нужного количества пуха.