library(rvest)
## Loading required package: xml2
url <- "https://no.wikipedia.org/wiki/Norge"

xpath <- as.character('//*[@id="mw-content-text"]/div/table[3]')
tabell <- url %>% read_html() %>% html_nodes(xpath=xpath) %>% html_table()
tabell
## [[1]]
##       Storby (tettsted) Vinter  (des-feb) Vår(mar-mai) Sommer(jun-aug)
## 1                  Oslo              1 °C        14 °C           21 °C
## 2                Bergen              4 °C        11 °C           19 °C
## 3     Stavanger/Sandnes              3 °C        11 °C           18 °C
## 4             Trondheim              0 °C         9 °C           18 °C
## 5 Fredrikstad/Sarpsborg              0 °C        11 °C           21 °C
## 6               Drammen             –1 °C        12 °C           21 °C
##   Høst(sep-nov) Nedbør(per år)
## 1         12 °C         877 mm
## 2         12 °C        2300 mm
## 3         12 °C        1280 mm
## 4          9 °C         902 mm
## 5         11 °C         815 mm
## 6         11 °C         965 mm

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