Как преобразовать строку пространства, разделенного на фрейм данных в r - PullRequest
0 голосов
/ 28 января 2019

Я удалил эти данные с веб-сайта OCC и получил файл ascii, разделенный пробелами.Я хочу превратить эту строку во фрейм данных.

Я пытался использовать read.table, readr :: read_tsv, но я не получаю желаемых результатов.Ниже приведен код для доступа к данным, которые я хочу преобразовать.

  library(rvest)
  library(readr)

  data =  read_html('https://www.theocc.com/webapps/series-search? 
  symbolType=U&symbol=AAPL')%>%html_text()

  x = read.table(data, header = T) 
  x = read_tsv(data)   

Я ожидал бы, что результат получится в виде фрейма данных, НО вместо этого read.table () печатает результат вконсоль с сообщением об ошибке и предупреждением.

1 Ответ

0 голосов
/ 28 января 2019

Загруженный файл содержит описательный контент над заголовком;фактически 6 строк:

Series Search Results for AAPL

Products for this underlying symbol are traded on: 
AMEX ARCA BATS BOX C2 CBOE EDGX GEM ISE MCRY MIAX MPRL NOBO NSDQ PHLX 

        Series/contract     Strike          Open Interest           
ProductSymbol   year    Month   Day Integer Dec C/P Call    Put Position Limit  
AAPL        2019    01  25  100 000 C P     0   190 25000000
AAPL        2019    01  25  105 000 C P     0   127 25000000
AAPL        2019    01  25  110 000 C P     0   87  25000000
AAPL        2019    01  25  115 000 C P     0   314 25000000
...

Вы можете прочитать его через read_tsv(skip = 6):

library(rvest)
library(readr)

df <- read_html(
  'https://www.theocc.com/webapps/series-search?symbolType=U&symbol=AAPL'
) %>% 
  html_text() %>% 
  read_tsv(
    skip = 6
  )

Однако первый столбец имеет широкий заголовок, и есть несколько (2) вкладок, отделяющих его отследующий столбец, в результате чего

enter image description here

Вам нужно будет сделать некоторый массаж:

dfnames <- names(df)[1:10]
df <- df %>% 
  select(-year)
names(df) <- dfnames

enter image description here

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