readHTMLTable 丢失的行

readHTMLTable lost rows

我尝试使用readHTMLTable来阅读

https://ows.doleta.gov/unemploy/trigger/2002/trig_101302.html

(下载到.html文件后,不知道怎么上传到这里。 下载代码是 download.file(完整 URL,文件名 1) )

结果table丢失了很多行,很多状态消失了。比如说,结果列表只有 40 行,而 html 文件中有 53 个州和很多 non-state 行。我试过 header 的东西,但它不起作用。

非常感谢任何有助于获得包含所有州的完整 table 的建议。

table 的内部结构非常糟糕,因此您需要做一些工作才能将其提取到适当的数据框中。使用 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" ...

它仍然不是很好,但从这一点开始可以更容易地清理它。

一旦您通过下载页面解决了 readHTMLtablehttps 问题,这对我有用;一切都是字符串,日期以EB开头,但它至少给了你信息,你可以开始清理了

library(XML)
doc <- "C:/Users/ME/Desktop/trig_101302.html"
tab <- readHTMLTable(doc, stringsAsFactors=FALSE)[[1]][6:58,] 
tab

给出下面的table

在你提到的第二个 URL 中,顶部的行数发生了变化,其中一列似乎消失了(波多黎各发生了一些事情),所以更普遍的事情

library(XML)
doc="C:/Users/ME/Desktop/trig_123117.html"
tab <- readHTMLTable(doc, stringsAsFactors=FALSE)[[1]]
tab <- tab[which(tab[[4]]=="Alabama"):which(tab[[4]]=="Wyoming"), ]

可能会起作用;未来剩下的风险是州名从第四列移开


   V1 V2 V3                      V4 V5   V6  V7   V8  V9 V10 V11          V12
6   Â  Â  &                 Alabama  Â 2.17 118  5.6 105 121   Â E 06-04-1983
7   Â  Â  Â                  Alaska  Â 3.63 109  6.9 109 106   Â E 06-01-2002
8   Â  Â  &                 Arizona  Â 1.97 134  5.9 128 151   Â E 10-23-1982
9   Â  Â  &                Arkansas  Â 2.87 117  5.1  98 115   Â E 03-26-1983
10  Â  Â  &              California  Â 3.38 137  6.4 120 128   Â E 07-09-1983
11  Â  Â  &                Colorado  Â 1.69 182  5.1 141 182   Â E 01-24-1981
12  Â  Â  Â             Connecticut  Â 3.08 150  3.8 111 180   Â E 01-24-1981
13  Â  *  &                Delaware  Â 2.02 133  4.0 121  97   Â E 07-17-1982
14  Â  Â  &         District of Col  Â 1.62 122  6.0  89 107   Â E 01-24-1981
15  Â  *  &                 Florida  Â 1.88 131  5.3 112 147   Â E 01-24-1981
16  Â  *  &                 Georgia  Â 1.81 139  4.7 117 127   Â E 01-24-1981
17  Â  Â  &                  Hawaii  Â 1.93 107  4.1  93 100   Â E 01-24-1981
18  Â  Â  &                   Idaho  Â 2.31 125  5.3 108 110   Â E 06-22-2002
19  Â  Â  &                Illinois  Â 2.80 141  6.4 118 148   Â E 06-25-1983
20  Â  Â  &                 Indiana  Â 1.79 135  5.1 115 154   Â E 04-30-1983
21  Â  *  &                    Iowa  Â 1.75 138  3.8 115 146   Â E 06-04-1983
22  Â  Â  Â                  Kansas  Â 2.04 160  4.5 104 118   Â E 11-06-1982
23  Â  *  &                Kentucky  Â 2.13 125  5.2  92 126   Â E 03-19-1983
24  Â  Â  &               Louisiana  Â 1.93 132  5.9 103 105   Â E 03-14-1987
25  Â  Â  &                   Maine  Â 1.53 119  4.1 100 120   Â E 06-25-1994
26  Â  Â  &                Maryland  Â 2.00 139  4.2 102 105   Â E 07-31-1982
27  Â  *  &           Massachusetts  Â 3.20 137  5.0 131 192   Â E 06-29-1991
28  Â  Â  &                Michigan  Â 2.79 134  6.5 122 180   Â E 06-15-1991
29  Â  Â  &               Minnesota  Â 1.81 145  4.2 113 127   Â E 06-18-1983
30  Â  Â  &             Mississippi  Â 2.47 118  6.4 120 110   Â E 07-16-1983
31  Â  Â  &                Missouri  Â 2.40 126  5.1 108 150   Â E 06-19-1982
32  Â  Â  &                 Montana  Â 1.67 105  4.4  97  89   Â E 06-04-1983
33  Â  Â  &                Nebraska  Â 1.32 149  3.5 112 116   Â E 01-24-1981
34  Â  Â  &                  Nevada  Â 2.58 123  5.3 103 135   Â E 03-19-1983
35  Â  *  Â New \r\n      Hampshire  Â 1.45 165  4.5 121 155   Â E 01-24-1981
36  Â  Â  &              New Jersey  Â 3.40 130  5.4 128 145   Â E 06-19-1982
37  Â  Â  &              New Mexico  Â 1.94 139  6.2 131 129   Â E 11-27-1982
38  Â  Â  &                New York  Â 2.75 132  6.0 125 133   Â E 01-24-1981
39  @  Â  Â          North Carolina  Â 2.58 138  6.6 117 183  13 B 06-02-2002
40  Â  *  &            North Dakota  Â 0.96 121  3.3 117 110   Â E 06-11-1983
41  Â  Â  &                    Ohio  Â 1.98 130  5.6 130 136   Â E 05-14-1983
42  Â  Â  &                Oklahoma  Â 1.70 154  4.3 110 138   Â E 01-24-1981
43  @  Â  Â                  Oregon  Â 3.68 127  7.2 112 150  13 B 01-06-2002
44  Â  Â  &            Pennsylvania  Â 3.44 130  5.4 112 128   Â E 08-06-1983
45  Â  Â  &             Puerto Rico  Â 5.76 109 12.7 111 125   Â E 01-01-2000
46  Â  Â  Â            Rhode Island  Â 2.95 107  4.4  91 107   Â E 07-08-1995
47  Â  Â  &          South Carolina  Â 2.56 121  5.4  96 142   Â E 03-19-1983
48  Â  *  &            South Dakota  Â 0.70 137  2.8  82 127   Â E 01-24-1981
49  Â  Â  &               Tennessee  Â 2.07 108  4.8 106 123   Â E 09-25-1982
50  Â  Â  &                   Texas  Â 2.15 154  6.0 122 142   Â E 01-24-1981
51  Â  *  &                    Utah  Â 1.77 158  4.9 113 153   Â E 06-25-1983
52  Â  Â  Â                 Vermont  Â 2.30 164  4.0 111 137   Â E 07-13-1991
53  Â  Â  &          Virgin Islands  Â 2.84 240  5.6 186 280   Â E 08-06-1983
54  Â  Â  &                Virginia  Â 1.48 175  4.0 114 181   Â E 01-24-1981
55  @  *  Â              Washington  Â 3.61 133  7.0 109 134  13 B 01-06-2002
56  Â  Â  & West \r\n      Virginia  Â 2.31 126  6.2 126 112   Â E 07-13-1991
57  Â  Â  &               Wisconsin  Â 2.66 133  5.0 108 135   Â E 06-18-1983
58  Â  *  &                 Wyoming  Â 1.19 143  3.9  97 100   Â E 06-13-1987