如何在R中将空格分隔的字符串转换为数据帧

时间:2019-01-28 03:50:37

标签: r dataframe tidyverse

我从OCC网站上抓取了这些数据,并返回了一个以空格分隔的ascii文件。我希望将此字符串转换为数据框。

我尝试使用read.table,readr :: read_tsv,但没有得到想要的结果。以下是获取我要转换的数据的代码。

fgetcsv

我希望没有看到结果出来,因为是一个数据帧,但read.table()将结果打印到控制台并显示一条错误和警告消息。

1 个答案:

答案 0 :(得分:2)

下载的文件在标题上方包含描述性内容;实际上有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)TAB将其与下一列分开,结果是

enter image description here

您必须进行一些按摩:

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

enter image description here