【问题标题】:How to convert a string of space delimited to a data frame in r如何将分隔的空格字符串转换为r中的数据框
【发布时间】:2019-06-21 01:28:34
【问题描述】:

我从 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() 会将结果打印到控制台并显示错误和警告消息。

【问题讨论】:

  • 它仍然只是打印到控制台并带有错误和警告消息。您介意运行代码并查看问题所在吗?

标签: r dataframe tidyverse readr


【解决方案1】:

下载的文件在标题上方包含描述性内容;实际上是 6 行:

AAPL 系列搜索结果 该标的符号的产品交易于: AMEX ARCA BATS BOX C2 CBOE EDGX GEM ISE MCRY MIAX MPRL NOBO NSDQ PHLX 系列/合约罢工未平仓合约 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 将其与下一列隔开,导致

你必须做一些按摩:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-12
    • 1970-01-01
    • 2018-02-16
    • 2015-06-02
    • 2016-06-07
    • 2022-08-12
    • 1970-01-01
    • 2021-01-22
    相关资源
    最近更新 更多