Moro! Kan vi lage en generisk funksjon?
library(writexl)
## Warning: package 'writexl' was built under R version 3.5.3
get.table <- function(url, nr) {
xpath <- paste0('//*[@id="mw-content-text"]/div/table[', nr, ']', collapse = "")
tabell <- url %>% read_html() %>% html_nodes(xpath=xpath) %>% html_table()
tabell
}
get.table("https://no.wikipedia.org/wiki/USA", 4)
## [[1]]
## Økonomiske nøkkeltall\n[35][36][37][38] 2006 % av BNP 2009
## 1 BNP mrd US$ [39] 13.856 14.419
## 2 BNP/innb US$ [40] 46.437,1 47.001,6
## 3 BNP realvekst 2,7
## 4 Konsumpriser, endring [41] 3,23 -0,20
## 5 Renter, 3 mnd 4,8 0,2
## 6 Arbeidsløshet [42] 4,6 9,3
## 7 Investering mrd US$ [43] 3.166 22,85 2.673
## 8 Eksport mrd US$ [44] 1.476 10,66 1.588
## 9 Import mrd US$ [45] 2.247 16,22 1.983
## 10 Handelsbalanse mrd US$ [46] -770,9 -5,6 -395,4
## 11 Betalingsbalanse mrd US$ [47] -806,7 -5,8 -384,0
## 12 Budsjettbalanse, primær -0,2
## % av BNP 2012 % av BNP 2015 % av BNP Kilder
## 1 16.155 18.037 Verdensbanken
## 2 51.456,7 56.207,0 IMF, Verdensbanken
## 3 -2,8 2,3 2,4 IMF, Verdensbanken
## 4 2,07 0,12 Verdensbanken
## 5 0,1 0,1 IMF
## 6 8,1 5,3 IMF, verdensbanken
## 7 18,54 3.064 18,97 3.577 19,83 Verdensbanken
## 8 11,01 2.198 13,61 2.264 12,55 Verdensbanken
## 9 13,75 2.764 17,11 2.786 15,45 Verdensbanken
## 10 -2,7 -565,7 -3,5 -522,0 -2,9 Verdensbanken
## 11 -2,7 -446,5 -2,8 -463,0 -2,6 IMF, Verdensbanken
## 12 -1,3 -6,1 -1,3 IMF
get.table("https://no.wikipedia.org/wiki/Danmark", 4)
## [[1]]
## Økonomiske nøkkeltall [50][51] 2006 % av BNP 2009 % av BNP
## 1 BNP mrd kr [52] 1.683 1.714
## 2 BNP mrd US$ [53] 282,9 319,8
## 3 BNP/innb US$ [54] 52.041,0 57.895,5
## 4 BNP realvekst [55] 3,8 -5,1
## 5 Konsumpriser, endring 1,9 1,3
## 6 Renter, 3 mnd 3,1 1,8
## 7 Investering mrd kr 22,6 17,4
## 8 Arbeidsløshet 3,9 3,6
## 9 Eksport mrd kr 849,2 52,0 783,7 47,1
## 10 Import mrd kr 789,0 48,3 723,1 43,5
## 11 Handelsbalanse mrd kr 60,2 3,9 60,6 3,8
## 12 Betalingsbalanse mrd kr 48,6 3,0 68,0 4,1
## 13 Budsjettbalanse 5,0 -2,8
## 2012 % av BNP 2015 % av BNP Kilder
## 1 1.867 1.966 Danm Statistik, IMF
## 2 322,3 Verdensbanken
## 3 57.636,1 Verdensbanken
## 4 -0,8 1,4 IMF, Verdensbanken
## 5 2,4 1,6 IMF
## 6 0,6 .. IMF
## 7 18,2 18,1 IMF
## 8 7,5 6,6 IMF
## 9 993,1 53,3 1.054,9 53,7 IMF
## 10 898,6 48,2 945,4 48,1 IMF
## 11 94,5 5,1 109,5 5,6 IMF
## 12 108,6 5,8 134,7 6,9 IMF
## 13 -3,9 -2,5 IMF
get.table("https://no.wikipedia.org/wiki/Finland", 3)
## [[1]]
## Økonomiske nøkkeltall [5][6][7] 2006 % av BNP 2009 % av BNP
## 1 BNP mrd euro 165,8 172,5
## 2 BNP mrd US$ [8] 216,6 251,5
## 3 BNP/innb US$ [9] 41.120,7 47.107,2
## 4 BNP realvekst [10] 4,1 -8,3
## 5 Konsumpriser, endring 1,3 1,6
## 6 Renter, 3 mnd 3,1 1,2
## 7 Renter, pengemarked EUR 3,1 1,0
## 8 Investering mrd euro 21,8 18,6
## 9 Arbeidsløshet 7,7 8,2
## 10 Eksport mrd euro 75,5 45,5 65,1 37,7
## 11 Import mrd euro 67,2 40,5 61,6 35,7
## 12 Handelsbalanse mrd euro 8,3 5,5 3,5 1,8
## 13 Betalingsbalanse mrd euro 7,5 4,5 3,1 1,8
## 14 Budsjettbalanse 3,7 -1,3
## 2012 % av BNP 2015 % av BNP Kilder
## 1 192,4 203,0 IMF
## 2 256,7 Verdensbanken
## 3 47.415,6 Verdensbanken
## 4 -1,4 IMF, Verdensbanken
## 5 3,2 1,5 IMF
## 6 0,6 .. IMF
## 7 0,1 0,1 IMF
## 8 19,8 18,4 IMF
## 9 7,7 7,9 IMF
## 10 79,9 41,5 81,2 40,0 IMF
## 11 81,0 42,1 80,3 39,6 IMF
## 12 -1,1 -0,6 0,9 0,4 IMF
## 13 -2,8 -1,4 0,8 0,4 IMF
## 14 -0,8 0,0 IMF
olje <- get.table("https://no.wikipedia.org/wiki/Statens_pensjonsfond",2)
str(olje)
## List of 1
## $ :'data.frame': 23 obs. of 5 variables:
## ..$ År : int [1:23] 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 ...
## ..$ Verdi1 : chr [1:23] "47,6" "113,4" "171,8" "222,4" ...
## ..$ Økning : chr [1:23] "" "138,2 %" "51,5 %" "29,5 %" ...
## ..$ Overføring1: chr [1:23] "" "60,9" "32,8" "24,2" ...
## ..$ Avkastning2: chr [1:23] "" "" "9,3 %" "14,5 %" ...
olje
## [[1]]
## År Verdi1 Økning Overføring1 Avkastning2
## 1 1996 47,6
## 2 1997 113,4 138,2 % 60,9
## 3 1998 171,8 51,5 % 32,8 9,3 %
## 4 1999 222,4 29,5 % 24,2 14,5 %
## 5 2000 386,4 73,7 % 149,8 2,5 %
## 6 2001 613,7 58,8 % 251,2 -2,5 %
## 7 2002 609,0 -0,8 % 125,4 -4,7 %
## 8 2003 845,3 38,8 % 103,9 12,6 %
## 9 2004 1 016,4 20,2 % 138,2 8,9 %
## 10 2005 1 399,1 37,7 % 220,3 11,1 %
## 11 2006 1 783,7 27,5 % 288,3 7,9 %
## 12 2007 2 018,6 13,2 % 313,6 4,3 %
## 13 2008 2 275 12,7 % 384,0 -23,3 %
## 14 2009 2 640 16,0 % 169,0 25,6 %
## 15 2010 3 077 16,6 % 182,0 9,6 %
## 16 2011 3 312 7,6 % 271,0 -2,5 %
## 17 2012 3 816 15,2 % 276,0 13,4 %
## 18 2013 5 038 32,0 % 239,0 16,0 %
## 19 2014 6 431 27,6 % 147,0 7,6 %
## 20 2015 7 475 16,2 % 43,0 2,7 %
## 21 2016 7 510 0,5 % -105,0 6,9 %
## 22 2017 8 488 13,0 % -61,0 13,7 %
## 23 2018 8 256 -2,7 % 33,8 -6,1 %
olje <- olje[[1]]
fiks <- c(3,5)
for (i in fiks) {
olje[,i] <- gsub("%", "", olje[,i])}
olje
## År Verdi1 Økning Overføring1 Avkastning2
## 1 1996 47,6
## 2 1997 113,4 138,2 60,9
## 3 1998 171,8 51,5 32,8 9,3
## 4 1999 222,4 29,5 24,2 14,5
## 5 2000 386,4 73,7 149,8 2,5
## 6 2001 613,7 58,8 251,2 -2,5
## 7 2002 609,0 -0,8 125,4 -4,7
## 8 2003 845,3 38,8 103,9 12,6
## 9 2004 1 016,4 20,2 138,2 8,9
## 10 2005 1 399,1 37,7 220,3 11,1
## 11 2006 1 783,7 27,5 288,3 7,9
## 12 2007 2 018,6 13,2 313,6 4,3
## 13 2008 2 275 12,7 384,0 -23,3
## 14 2009 2 640 16,0 169,0 25,6
## 15 2010 3 077 16,6 182,0 9,6
## 16 2011 3 312 7,6 271,0 -2,5
## 17 2012 3 816 15,2 276,0 13,4
## 18 2013 5 038 32,0 239,0 16,0
## 19 2014 6 431 27,6 147,0 7,6
## 20 2015 7 475 16,2 43,0 2,7
## 21 2016 7 510 0,5 -105,0 6,9
## 22 2017 8 488 13,0 -61,0 13,7
## 23 2018 8 256 -2,7 33,8 -6,1
fiks.oljetall <- function(i) {
olje[,i] <- gsub(",", "\\.", olje[,i])
olje[,i] <- gsub("\\s+", " ", olje[,i])
olje[,i] <- gsub(" ", "", olje[,i])
olje[,i] <- gsub("-", "-", olje[,i])
olje[,i] <- as.numeric(olje[,i])
}
olje <- sapply(1:5, fiks.oljetall)
## Warning in FUN(X[[i]], ...): NAs introduced by coercion
olje <- as.data.frame(olje)
names(olje) <- c("År", "Verdi", "Økning (%)", "Overføring", "Avkastning (%)")
olje[7,3] <- -0.8
write_xlsx(olje, "data/oljefond.xlsx")
write.csv(olje, "data/oljefond.csv", row.names=FALSE, fileEncoding = "UTF-8")
olje
## År Verdi Økning (%) Overføring Avkastning (%)
## 1 1996 47.6 NA NA NA
## 2 1997 113.4 138.2 60.9 NA
## 3 1998 171.8 51.5 32.8 9.3
## 4 1999 222.4 29.5 24.2 14.5
## 5 2000 386.4 73.7 149.8 2.5
## 6 2001 613.7 58.8 251.2 -2.5
## 7 2002 609.0 -0.8 125.4 -4.7
## 8 2003 845.3 38.8 103.9 12.6
## 9 2004 1016.4 20.2 138.2 8.9
## 10 2005 1399.1 37.7 220.3 11.1
## 11 2006 1783.7 27.5 288.3 7.9
## 12 2007 2018.6 13.2 313.6 4.3
## 13 2008 2275.0 12.7 384.0 -23.3
## 14 2009 2640.0 16.0 169.0 25.6
## 15 2010 3077.0 16.6 182.0 9.6
## 16 2011 3312.0 7.6 271.0 -2.5
## 17 2012 3816.0 15.2 276.0 13.4
## 18 2013 5038.0 32.0 239.0 16.0
## 19 2014 6431.0 27.6 147.0 7.6
## 20 2015 7475.0 16.2 43.0 2.7
## 21 2016 7510.0 0.5 -105.0 6.9
## 22 2017 8488.0 13.0 -61.0 13.7
## 23 2018 8256.0 -2.7 33.8 -6.1