Чтение текстового файла по URL в фрейме данных R - PullRequest
0 голосов
/ 25 февраля 2020

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

            absd  kjehfjef
     kjldnflknkdsnfds lkdld
              kjdkskjdjjsbdjsjs

  jkdkjbfsjbsd
          ajdkjsadasjd
           jksabdkjabdw



   STATE         WEEK  WEEK WEEK    CUM   CUM   CUM   CUM   CUM
                 TOTAL DEV  DEV     TOTAL DEV   DEV   DEV   DEV
                       FROM FROM          FROM  FROM  FROM  FROM
                       NORM L YR          NORM  L YR  NORM  L YR
                                                      PRCT  PRCT

 ALABAMA            11   11   11    2137   274   217    15    11
 ARIZONA             0    0    0    2622  -341    45   -12     2
 ARKANSAS            1    1    1    1899    99   275     6    17
 CALIFORNIA          0    0    0    1195   345    -6    41     0

Фрейм данных должен выглядеть так. фрейм данных. Одна проблема заключается в том, что заголовки столбцов растягиваются на несколько строк.

Может ли кто-нибудь помочь мне добиться этого?

Я попытался a<-read.table(text = <file name>, skip = grep("-34 more junk is here", <file name>)), но у меня появилась ошибка "нет доступных строк на входе".

Ответы [ 2 ]

1 голос
/ 25 февраля 2020

Попробуйте

library(data.table)
a <- fread(file="junk.txt", skip="ALABAMA") 

Затем либо добавьте свои собственные имена столбцов вручную, либо, если их слишком много, попробуйте как-нибудь прочитать их из файла. Возможно, с помощью read.fwf() или scan().


со страницы справки fread:

skip
Если 0 (по умолчанию), начать с первой строки и оттуда находит первую строку с постоянным количеством столбцов. Это автоматически позволяет избежать неправильной информации заголовка перед строкой имен столбцов. Пропустить> 0 означает игнорировать первые пропущенные строки вручную. skip = "строка" ищет "строку" в файле (например, подстроку строки с именами столбцов) и начинается с этой строки (вдохновлено read.xls в пакете gdata).

0 голосов
/ 25 февраля 2020

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

data.table::fread(
  file = <file_name>,
  skip = 1
)

#>            V1 V2 V3 V4   V5   V6  V7  V8 V9
#> 1:    ALABAMA 11 11 11 2137  274 217  15 11
#> 2:    ARIZONA  0  0  0 2622 -341  45 -12  2
#> 3:   ARKANSAS  1  1  1 1899   99 275   6 17
#> 4: CALIFORNIA  0  0  0 1195  345  -6  41  0

Создано в 2020-02-25 с помощью пакета Представить (v0.3.0)

Вы также можете попробовать read.delim, но это уродливо как объект фрейма данных.

read.delim(
  file = <file_name>,
  skip = 6,
  col.names = "v"
)

#>                                                                  v
#> 1     STATE         WEEK  WEEK WEEK    CUM   CUM   CUM   CUM   CUM
#> 2                   TOTAL DEV  DEV     TOTAL DEV   DEV   DEV   DEV
#> 3                        FROM FROM          FROM  FROM  FROM  FROM
#> 4                        NORM L YR          NORM  L YR  NORM  L YR
#> 5                                                       PRCT  PRCT
#> 6  ALABAMA            11   11   11    2137   274   217    15    11
#> 7  ARIZONA             0    0    0    2622  -341    45   -12     2
#> 8  ARKANSAS            1    1    1    1899    99   275     6    17
#> 9  CALIFORNIA          0    0    0    1195   345    -6    41     0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...