我目前正在尝试从以下URL下载表:
url1<-"http://iambweb.ams.or.at/ambweb/showcognusServlet?tabkey=3643193®ionDisplay=%C3%96sterreich&export=html&outputLocale=de"
我将文件下载并保存为.xls,因为我认为它是带有以下代码的Excel文件:
temp <- paste0(tempfile(), ".xls")
download.file(url1, destfile = temp, mode = "wb")
首先,我尝试将R作为Excel文件读取,但它似乎是html(尽管可以被Excel读取):
dfAMS <- read_excel(path = temp, sheet = "Sheet1", range = "I7:I37")
因此:
df <- read_html(temp)
现在不幸的是,我陷入困境,因为以下代码行不会给我预期的结果(漂亮的表或至少.xls中的I7:I37列):
dfAMS <- html_node(df, "table") %>% html_table(fill = T) %>% tibble::as_tibble()
dplyr::glimpse(df)
我非常确定解决方案非常简单,但我目前仍处于困境,无法找到解决方案...
谢谢!
答案 0 :(得分:0)
Klamsi,URL指向重命名为具有“ .xls”扩展名的html文件。这是网站站长之间比较常见的做法。通过将“ .xls”扩展名重命名为“ .html”来自己尝试。
第二个问题是html的表配置非常混乱。感兴趣的表是文档中的第五个表。
这是一种获取总人口(或“范围A7:B37,I7:K37”)值的解决方法
url <- "http://iambweb.ams.or.at/ambweb/showcognusServlet?tabkey=3643193®ionDisplay=%C3%96sterreich&export=html&outputLocale=en"
df <- read_html(url) %>%
html_table(header = TRUE, fill = TRUE) %>%
.[[5]] %>% #Extract the fifth table in the list
as.data.frame() %>%
.[,c(1:11)] %>%
select(1:2, 9:11)
names <- unlist(df[1,])
names[1:2] <- c("item", "Bundesland")
colnames(df) <- names
df <- df[-1,]
df %>% head()
item Bundesland Bestand Veränderung zum VJ absolut Veränderung zum VJ in %
2 Arbeitslosigkeit Bgld 7119 -973 -0.120242214532872
3 Arbeitslosigkeit Ktn 16564 -2160 -0.115359965819269
4 Arbeitslosigkeit NÖ 46342 -6095 -0.116234719758949
5 Arbeitslosigkeit OÖ 29762 -4649 -0.135102147569091
6 Arbeitslosigkeit Sbg 11173 -643 -0.0544177386594448
7 Arbeitslosigkeit Stmk 28677 -5602 -0.1634236704688