GithubHelp home page GithubHelp logo

uvoz about appr-2017-18 HOT 1 CLOSED

spelaognjanovic avatar spelaognjanovic commented on July 26, 2024
uvoz

from appr-2017-18.

Comments (1)

jaanos avatar jaanos commented on July 26, 2024

Stran dobi podatke s povezave http://www.ultimatetennisstatistics.com/seasonsTable?current=1&rowCount=20&sort%5Bseason%5D=desc&searchPhrase=&_=1512663744085 v obliki JSON. Vrstice so naštete v seznamu rows - vsak stolpec je predstavljen v svojem elementu, edino pod bestPlayer so navedeni stolpci za igralca - podatki o njegovi državi so nadalje zbrani pod country. Podatke lahko uvoziš nekako tako:

library(httr)
library(dplyr)

link <- paste0("http://www.ultimatetennisstatistics.com/seasonsTable?current=1&rowCount=20&sort[season]=desc&searchPhrase=&_=",
               as.numeric(Sys.time()))
data <- content(GET(link))$rows %>% lapply(function(x) {
  country <- x$bestPlayer$country$name
  x$bestPlayer <- c(x$bestPlayer$country, x$bestPlayer)
  x$bestPlayer$country <- country
  x <- c(x, x$bestPlayer)
  x$bestPlayer <- NULL
  return(x)
}) %>% bind_rows()

Svetujem, da uvoza knjižnic opraviš v lib/libraries.r (tam že imaš dplyr) in potem vsakič pred začetkom dela izvedeš ta program, da bodo ustrezne knjižnice uvožene (pri prevajanju poročila se prav tako izvede ta program).

V povezavi do podatkov sem zadnjo številko nadomestil s trenutnim časom (ne vem, če to kaj vpliva, a morda s tem poskrbiš, da dobiš vedno aktualne podatke). Potem se za vsako vrstico izvede podana funkcija. S c se lahko poleg vektorjev združuje tudi sezname - najprej se podatki za državo pridružijo podatkom za igralca (tako država kot igralec sta sedaj v polju z imenom name, zato se država prepiše v polje country, ki je prej vsebovalo vse podatke o državi), nato pa ti podatki še k preostalim podatkom (polje z vsemi podatki o igralcu se lahko pobriše). Nazadnje funkcija bind_rows iz knjižnice dplyr vse te vrstice združi v eno razpredelnico.

Podatke bo treba še obdelati - stolpce s procenti bo treba pretvoriti v številke (uporabi funkcijo parse_number iz knjižnice readr).

Kar se tiče zastav, jih lahko dobiš iz imen datotek z zastavami. Besedilne podatke lahko dobiš tako kot dosedaj, iz iste tabele pa dobiš še podatke o državah v razpredelnico, ki ima ustrezno državo na istem mestu kot tabela z igralci:

  html_tabela <- stran %>% html_nodes(xpath="//table[@class='wikitable']") %>% .[[1]]
  tabela <- html_tabela %>% html_table(fill = TRUE)
  drzave <- html_tabela %>% html_nodes(xpath=".//tr") %>% .[-1] %>%
    sapply(. %>% html_nodes(xpath="./td") %>%
             lapply(. %>% html_nodes(xpath="./a[@class='image']") %>% html_attr("href") %>%
                      sapply(. %>% { gsub("US_.*_Flag", "Flag_of_the_United_States", .) } %>%
                               strapplyc("Flag_of_(.*)\\.svg") %>%
                               { gsub("_", " ", gsub("_\\(.*", "", gsub("^the_", "", .))) }) %>%
                      .[1]) %>% { ifelse(sapply(., is.list), NA, .) %>%
                          c(rep(NA, 5 - length(.)))} %>%
             unlist()) %>% t() %>% data.frame()
  colnames(drzave) <- colnames(tabela)

V grobem torej to deluje tako, da greš čez vse vrstice (razen prve - prvi sapply), nato pa čez vse celice v vrstici (lapply) in nazadnje čez vse slike v celici (ponekod jih ni, v enem primeru pa sta dve ameriški - zato na koncu vzameš samo eno). Ponekod se uporabljajo stare zastave - zato je potrebna zamenjava za ZDA in za brisanje letnic. Ponekod tudi vrstice niso polne - v tem primeru se vrstica zapolni z NA. Rezultat je matrika, ki jo je treba transponirati (t()) in pretvoriti v razpredelnico. Ker dobljena imena stolpcev niso ravno koristna, se nazadnje uporabijo imena iz razpredelnice z igralci.

Vidim, da na svojem repozitoriju nimaš odprtega sledilca zadev - da ga odpreš, pojdi na svoj repozitorij, v zgornji vrstici klikni na Settings, nato pa obkljukaj Issues. V zgornji vrstici se bo pojavil zavihek Issues - če boš imeli kakršnokoli vprašanje, tam odpri zadevo (torej na svojem repozitoriju) in jo pusti odprto, dokler je ne razrešiš.

from appr-2017-18.

Related Issues (3)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.