R read.table заполнить пустые данные значением выше - PullRequest
0 голосов
/ 14 июля 2020

У меня есть текстовый файл с ужасным форматированием, который мне нужно прочитать в R. Я читаю кучу других файлов, которые не имеют ужасного форматирования с помощью read.table, поэтому я хотел бы продолжать использовать эту функцию, если возможно.

Файл выглядит следующим образом:

 M  D YY CONC
 7  1 78 15
        0.00
        0.15
        1.06
        1.21
       10.91
       34.55
       69.09
       87.27
       73.67
       38.65
       12.27
        2.27
        6.52
        0.45
        0.00
        0.00
        0.00
        0.00
        0.00
        0.00
        0.00
        0.00
        0.00
        0.00
        0.00
        0.00
        0.00
        0.19
        0.96
        4.59
        4.55
        4.59
        7.25
        7.13
       11.60
        1.06
        0.15
        1.50
        1.16
        0.00
        0.00
        0.00
        0.00
        0.00
  7  1 78 16
        0.00
        0.00
        0.00
        0.00
        7.25
        1.50
        9.00
       20.25
       51.25
       55.00
       53.75
        3.13
        0.00
        0.00
        0.00
        0.00
        0.00
        0.00
        0.00
        0.00
        0.00
        0.00
        0.00
        0.00
        0.00
        0.00
        0.00
        0.00
        0.80
        0.98
        4.00
        2.47
        5.63
        3.50
        7.88
        0.43
        2.30
        0.00
        0.00
        0.00
        0.00
        0.00
        0.00
        0.00
  7  1 78 17
        4.15
        0.00
        0.00
        0.15
        2.27
       16.36
       54.37
       67.96
       58.07
        3.58
        0.89
        0.20
        0.52
        0.59
        0.00
        0.00
        0.00
        0.00
        0.00
        0.00
        0.00
        0.00
        0.00
        5.44
        0.00
        3.09
        3.26
        7.17
        9.39
        8.65
        3.09
        0.45
        7.41
        3.18
        0.00
        2.05
        0.00

Существует один CON C в час на дату, указанную в первой строке. Моей конечной целью будет повторение даты и добавление столбца для часа. Итак, первый бит должен выглядеть так:

 M  D YY H CONC
 7  1 78 1 15
 7  1 78 2 0.00
 7  1 78 3 0.15
 7  1 78 4 1.06
 7  1 78 5 1.21
 7  1 78 6 10.91
 7  1 78 7 34.55
 7  1 78 8 69.09

Я могу прочитать файл, используя это:

monitor_datai <- read.table(file =file,header = TRUE, stringsAsFactors = FALSE, skip = 0, sep = "", fill = TRUE)

НО проблема с этим подходом заключается в том, что данные читаются при заполнении первого столбец с месяцем (если он указан в этой строке) или концентрацией (если в этой строке не указан месяц). Выглядит примерно так:

head(monitor_datai)
     V1 V2 V3 V4
1  7.00  1 78 15
2  0.00 NA NA NA
3  0.15 NA NA NA
4  1.06 NA NA NA
5  1.21 NA NA NA
6 10.91 NA NA NA

Итак, мне нужна помощь в чтении файла и исправлении форматирования.

Спасибо!

1 Ответ

1 голос
/ 14 июля 2020

Вот мой подход, использующий оружие из data.table -пакета

Я не был уверен, какие значения H должны стать ... всего 1: 128, последовательности по группе, или ...? Пожалуйста, укажите, и я добавлю его в ответ. 1007 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...