r - readHTMLTable 丢失行
问题描述
我尝试使用 readHTMLTable 来阅读
https://ows.doleta.gov/unemploy/trigger/2002/trig_101302.html
(下载成 .html 文件后,这里不知道怎么上传。下载代码是 download.file(FullURL,filename1) )
结果表丢失了很多行,很多状态消失了。比如说,结果列表只有 40 行,而 html 文件中有 53 个状态和很多非状态行。我试过标题的东西,但它不起作用。
非常感谢任何有助于获得包含所有状态的完整表格的建议。
解决方案
该表的内部结构非常令人震惊,因此您需要做一些工作才能将其提取到适当的数据框中。使用rvest进行抓取,使用 base R 进行清理(如果您愿意,有很多有用的替代包),
library(rvest)
# scrape HTML
h <- read_html('https://ows.doleta.gov/unemploy/trigger/2002/trig_101302.html')
df <- h %>%
html_node('table') %>% # select <table> HTML node
html_table(fill = TRUE) %>% # extract table from HTML to data frame
head(57) # omit end matter
# fix names to the point of R legality
names(df) <- make.names(gsub('\\s+', '.',
sapply(head(df, 4),
paste, collapse = '.')),
unique = TRUE)
df <- df[-1:-4, ] # remove rows with names
df[] <- lapply(df, type.convert, as.is = TRUE) # coerce to appropriate types
str(df)
#> 'data.frame': 53 obs. of 12 variables:
#> $ ... : chr "" "" "" "" ...
#> $ ....1 : chr "" "" "" "" ...
#> $ ....2 : chr "&" "" "&" "&" ...
#> $ ....3 : chr "Alabama" "Alaska" "Arizona" "Arkansas" ...
#> $ INDICATORS... : logi NA NA NA NA NA NA ...
#> $ INDICATORS.13WeekIUR.. : num 2.17 3.63 1.97 2.87 3.38 1.69 3.08 2.02 1.62 1.88 ...
#> $ INDICATORS.Pct.ofPrior2.Yrs.. : int 118 109 134 117 137 182 150 133 122 131 ...
#> $ INDICATORS.3.moSATUR.. : num 5.6 6.9 5.9 5.1 6.4 5.1 3.8 4 6 5.3 ...
#> $ INDICATORS.Pct.of.prior.Year. : int 105 109 128 98 120 141 111 121 89 112 ...
#> $ INDICATORS.Pct.of.prior.2ndYear. : int 121 106 151 115 128 182 180 97 107 147 ...
#> $ INDICATORS.Pct.of.prior.Avail.WKS. : int NA NA NA NA NA NA NA NA NA NA ...
#> $ STATUS.Periods.Begin.Date.B.End.Date.E..: chr "E 06-04-1983" "E 06-01-2002" "E 10-23-1982" "E 03-26-1983" ...
它仍然不是很好,但是从这一点可以更容易地清理它。