如何将 space 分隔的字符串转换为 r 中的数据框
How to convert a string of space delimited to a data frame in r
我从 OCC 网站上抓取了这些数据,并返回了一个 space 分隔的 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() 将结果打印到控制台,并显示错误和警告消息。
下载的文件包含header上方的描述性内容;实际上是 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
)
但是,第一列的宽度 header 并且有多个 (2) TAB 将它与下一列分隔开,导致
你得按摩一下:
dfnames <- names(df)[1:10]
df <- df %>%
select(-year)
names(df) <- dfnames
我从 OCC 网站上抓取了这些数据,并返回了一个 space 分隔的 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() 将结果打印到控制台,并显示错误和警告消息。
下载的文件包含header上方的描述性内容;实际上是 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
)
但是,第一列的宽度 header 并且有多个 (2) TAB 将它与下一列分隔开,导致
你得按摩一下:
dfnames <- names(df)[1:10]
df <- df %>%
select(-year)
names(df) <- dfnames