Jazykové prostredie r štatistický softvér. Čo je balík R: návod na použitie

Štatistická analýza je neoddeliteľnou súčasťou vedeckého výskumu. Kvalitné spracovanie dát zvyšuje šance na publikovanie článku v renomovanom časopise a pozdvihnutie výskumu na medzinárodnú úroveň. Existuje mnoho programov, ktoré môžu poskytnúť vysokokvalitnú analýzu, ale väčšina z nich je platená a licencia často stojí niekoľko stoviek dolárov alebo viac. Dnes si však povieme niečo o štatistickom prostredí, za ktoré nemusíte platiť a ktorého spoľahlivosť a obľúbenosť konkuruje najlepším komerčným štatistikám. balíčky: predstavíme vám R!

čo je R?

Pred uvedením jasnej definície je potrebné poznamenať, že R je viac než len program: je to rámec, jazyk a dokonca aj hnutie! Pozrieme sa na R z rôznych uhlov pohľadu.

R je výpočtové prostredie, vyvinuté vedcami na spracovanie údajov, matematické modelovanie a grafiku. R možno použiť ako jednoduchú kalkulačku, môžete vykonávať jednoduché štatistické analýzy (napríklad ANOVA alebo regresná analýza) a zložitejšie časovo náročné výpočty, testovať hypotézy, vytvárať vektorové grafy a mapy. Toto nie je úplný zoznam toho, čo sa dá v tomto prostredí robiť. Stojí za zmienku, že je distribuovaný bezplatne a je možné ho nainštalovať na operačné systémy Windows aj UNIX (Linux a MacOS X). Inými slovami, R je bezplatné a multiplatformové.

R je programovací jazyk, vďaka ktorému môžete písať vlastné programy ( skripty) používanie , ako aj používanie a vytváranie špecializovaných rozšírení ( balíkov). Balík je zbierka súborov s referenčnými informáciami a príkladmi, ktoré sú zhromaždené v jednom archíve. hrajú dôležitú úlohu, pretože sa používajú ako dodatočné rozšírenia založené na R. Každý balík je zvyčajne venovaný konkrétnej téme, napríklad: balík „ggplot2“ sa používa na vytváranie krásnych vektorových grafov určitého dizajnu a balík „qtl“ balík je ideálny pre genetické mapovanie. V súčasnosti je v knižnici R viac ako 7000 takýchto balíkov! Všetky boli skontrolované na chyby a sú verejne dostupné.


R je pre komunitu/pohyb.
Keďže R je bezplatný a open source produkt, jeho vývoj, testovanie a ladenie nevykonáva samostatná spoločnosť s najatým personálom, ale samotní používatelia. Za dve desaťročia sa z jadra vývojárov a nadšencov vytvorila obrovská komunita. Podľa najnovších údajov viac ako 2 milióny ľudí tak či onak pomáhalo rozvíjať a propagovať R na dobrovoľnej báze, počnúc prekladom dokumentácie, vytváraním školiacich kurzov a končiac vývojom nových aplikácií pre vedu a priemysel. Na internete je obrovské množstvo fór, kde nájdete odpovede na väčšinu otázok týkajúcich sa R.

Ako vyzerá prostredie R?

Existuje mnoho „škrupín“ pre R, ktorých vzhľad a funkčnosť sa môžu značne líšiť. Stručne sa však pozrieme len na tri z najpopulárnejších možností: Rgui, Rstudio a R, ktoré sa spúšťajú v termináli Linux/UNIX ako príkazový riadok.


Jazyk R vo svete štatistických programov

V súčasnosti existujú desiatky kvalitných štatistických balíkov, medzi ktorými jednoznačne vedú SPSS, SAS a MatLab. V roku 2013 sa však R napriek vysokej konkurencii stal najpoužívanejším softvérovým produktom na štatistickú analýzu vo vedeckých publikáciách (http://r4stats.com/articles/popularity/). Okrem toho sa R ​​v poslednom desaťročí stáva čoraz populárnejším v obchodnom sektore: obrie spoločnosti ako Google, Facebook, Ford a New York Times ho aktívne využívajú na zhromažďovanie, analýzu a vizualizáciu údajov (http://www.revolutionanalytics .com/companies-using-r). Aby sme pochopili dôvody rastúcej popularity jazyka R, venujme pozornosť jeho spoločným znakom a rozdielom od iných štatistických produktov.

Vo všeobecnosti možno väčšinu štatistických nástrojov rozdeliť do troch typov:

  1. GUI programy, na princípe „kliknite sem, tu a získajte hotový výsledok“;
  1. štatistické programovacie jazyky, ktoré vyžadujú základné znalosti programovania;
  1. "zmiešaný", ktoré majú aj grafické rozhranie ( GUI) a schopnosť vytvárať skriptovacie programy (napríklad: SAS, STATA, Rcmdr).

Vlastnosti programov s GUI

Programy s grafickým rozhraním majú pre bežného používateľa známy vzhľad a ľahko sa učí. Nie sú však vhodné na riešenie netriviálnych problémov, pretože majú obmedzený súbor štatistík. a nie je možné do nich písať vlastné algoritmy. Zmiešaný typ kombinuje pohodlie GUI shellu a silu programovacích jazykov. Pri detailnom porovnaní štatistických možností s programovacími jazykmi SAS a STATA sú však R aj MatLab podradené (porovnanie štatistických metód R, MatLab, STATA, SAS, SPSS). Okrem toho budete musieť zaplatiť slušné množstvo peňazí za licenciu týchto programov a jedinou bezplatnou alternatívou je Rcmdr: shell pre R s GUI (Rcommander).

Porovnanie R s programovacími jazykmi MatLab, Python a Julia

Medzi programovacími jazykmi používanými v štatistických výpočtoch sú na popredných miestach R a Matlab. Sú si navzájom podobné vzhľadom aj funkčnosťou; ale majú rôzne užívateľské lobby, čo určuje ich špecifickosť. Historicky bol MatLab zameraný na aplikované vedy inžinierstva, takže jeho silné stránky sú matematika. modelovanie a výpočty, navyše je to oveľa rýchlejšie ako R! Ale keďže R bol vyvinutý ako úzkoprofilový jazyk na štatistické spracovanie údajov, existuje veľa experimentálnych štatistík. sa v nej objavili a upevnili metódy. Táto skutočnosť a jeho nulové náklady urobili z R ideálnu platformu pre vývoj a používanie nových balíkov používaných v základných vedách.

Ďalšími „konkurenčnými“ jazykmi sú Python a Julia. Podľa môjho názoru je Python ako všeobecný programovací jazyk vhodnejší na spracovanie údajov a zhromažďovanie informácií pomocou webových technológií ako na štatistickú analýzu a vizualizáciu (hlavné rozdiely medzi R a Pythonom sú dobre opísané). Ale štatistický jazyk Julia je pomerne mladý a ambiciózny projekt. Hlavnou črtou tohto jazyka je rýchlosť výpočtov, v niektorých testoch prekračujúca R až 100-krát! Zatiaľ čo Julia je v ranom štádiu vývoja a má niekoľko ďalších balíčkov a nástupcov, z dlhodobého hľadiska je Julia možno jediným potenciálnym konkurentom R.

Záver

Jazyk R je teda teraz jedným z popredných štatistických nástrojov na svete. Aktívne sa využíva v genetike, molekulárnej biológii a bioinformatike, environmentálnych vedách (ekológia, meteorológia) a poľnohospodárskych disciplínach. R sa čoraz častejšie používa aj pri spracovaní medicínskych údajov, čím sa z trhu vytláčajú komerčné balíky ako SAS a SPSS.

Výhody prostredia R:

  • bezplatné a multiplatformové;
  • bohatý arzenál štatistík. metódy;
  • vysokokvalitná vektorová grafika;
  • viac ako 7000 testovaných balíkov;
  • flexibilné na použitie:
    - umožňuje vytvárať/upravovať skripty a balíčky,
    - komunikuje s inými jazykmi, ako sú: C, Java a Python,
    - vie pracovať s dátovými formátmi pre SAS, SPSS a STATA;
  • aktívna komunita používateľov a vývojárov;
  • pravidelné aktualizácie, dobrá dokumentácia a technická podpora. podpora.

nedostatky:

  • malé množstvo informácií v ruštine (hoci za posledných päť rokov sa objavilo niekoľko školení a zaujímavých kníh);
  • relatívne ťažké použitie pre používateľa, ktorý nie je oboznámený s programovacími jazykmi. To sa dá čiastočne vyhladiť prácou v Rcmdr GUI shell, o ktorom som písal vyššie, ale pre neštandardné riešenia je stále potrebné použiť príkazový riadok.

Zoznam užitočných zdrojov

  1. Oficiálna webová stránka: http://www.r-project.org/
  2. Web pre začiatočníkov: http://www.statmethods.net/
  3. Jedna z najlepších referenčných kníh: The R Book, 2nd Edition od Michaela J. Crawleyho, 2012
  4. Zoznam dostupnej literatúry v ruštine + dobrý blog

Akékoľvek riešenie R spustené v službách R (v databáze) musí používať balíky nainštalované v predvolenej knižnici R. Riešenia R sa zvyčajne prepoja s knižnicami používateľa zadaním cesty k súboru v kóde R, ale toto sa neodporúča pre produkčné prostredie.

Preto je úlohou správcu databázy alebo iného správcu na serveri zabezpečiť, aby boli všetky požadované balíky nainštalované na inštanciu servera SQL Server. Ak máte administrátorské práva na počítači, ktorý je hostiteľom inštancie SQL Server, môžete poskytnúť administratívne informácie o tom, ako nainštalovať balíky R a poskytnúť prístup k zabezpečenému úložisku balíkov, kde môžete získať balíky, ktoré vaši používatelia potrebujú. Táto časť poskytuje takéto informácie.

Pri inštalácii služieb R (v databáze) je predvolená hodnota R základné balíky ako stats a utils sú nainštalované spolu s RevoScaleR balík, ktorý podporuje pripojenia k serveru SQL Server.

Ak požadujete ďalší balík z CRAN alebo iného úložiska, musíte si balík stiahnuť a nainštalovať na svoju pracovnú stanicu.

Ak je potrebné spustiť nový balík v kontexte servera, správca ho musí nainštalovať na server.

Existuje niekoľko zdrojov balíkov R, najznámejšie sú CRAN a Bioconductor. Oficiálna webová stránka v jazyku R (https://www.r-project.org/) uvádza mnohé z týchto zdrojov. Okrem toho je veľa balíkov zverejnených na GitHub, kde je možné získať zdrojový kód. Môžu vám však byť poskytnuté aj balíčky R vyvinuté interne.

Bez ohľadu na zdroj musia byť inštalačné balíčky poskytnuté ako ZIP archív. Ak chcete použiť balík zo služieb R Services (v databáze), nezabudnite získať súbor ZIP v binárnom formáte systému Windows. (Niektoré balíky nemusia podporovať tento formát.) Ak chcete získať ďalšie informácie o obsahu formátu súboru zip a o tom, ako vytvoriť balík R, odporúčame vám tento návod, ktorý si môžete stiahnuť vo formáte PDF z uzla projektu R: Freidrich Leisch: Vytváranie balíkov R.

Balíky R sa zvyčajne dajú jednoducho nainštalovať z príkazového riadka bez toho, aby ste ich stiahli vopred, pokiaľ má počítač prístup na internet. Toto zvyčajne nie je prípad serverov používajúcich SQL Server. Ak teda chcete nainštalovať balík R na spustený počítač nie mať prístup na internet, musíte si vopred stiahnuť balík v správnom formáte ZIP a skopírovať súbory ZIP do priečinka prístupného na vašom počítači.

Nasledujúce časti popisujú dva spôsoby inštalácie balíkov offline:

    Popisuje, ako používať balík R miniCRAN na vytvorenie offline úložiska. Toto je pravdepodobne najefektívnejšia metóda, ak potrebujete nainštalovať balíky na viacero serverov a spravovať úložisko z jedného miesta.

    Poskytuje pokyny na inštaláciu balíkov offline ručným skopírovaním súborov ZIP.

Ak chcete nainštalovať nový balík R na počítač so systémom SQL Server 2016, musíte mať v tomto počítači práva správcu.

Ak tieto práva nemáte, kontaktujte svojho správcu a poskytnite mu informácie o balíku, ktorý potrebujete.

Ak inštalujete nový balík R na počítač, ktorý používa pracovnú stanicu R a je spustený nie nainštalovaný v inštancii SQL Server, na inštaláciu balíka stále potrebujete administrátorské práva v počítači. Po nainštalovaní balíka ho môžete spustiť lokálne.

Predvolené umiestnenie knižnice R pre služby R

Ak ste nainštalovali služby R Services (v databáze) predvolenej inštancie, knižnice balíkov R používané inštanciou sa nachádzajú v priečinku inštancie servera SQL Server. Napríklad:

  • Predvolená inštancia MSSQLSERVER C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\R_SERVICES\library
  • Pomenovaná inštancia MyNamedInstance C:\Program Files\Microsoft SQL Server\MSSQL13.MyNamedInstance\R_SERVICES\library

Môžete spustiť nasledujúci príkaz a skontrolovať predvolené knižnice pre aktuálnu inštanciu R.

EXECUTE sp_execute_external_script @language = N "R" , @script = N "OutputDataSet<- data.frame(.libPaths());" S SADAMI VÝSLEDKOV (( VARCHAR (MAX) NIE JE NULL));Ísť

Ďalšie informácie nájdete v časti .

SQL Server vNext poskytuje nové možnosti na inštaláciu a správu balíkov R, ktoré poskytujú správcovi dát väčšiu slobodu pri manipulácii s údajmi a kontrole spôsobu použitia balíka a inštalačného programu. Ďalšie informácie nájdete v časti .

Pri používaní služieb SQL Server 2106 R nie sú v súčasnosti k dispozícii nové funkcie balíka Management Pack. Aj keď máte tieto možnosti na určenie, ktoré balíky sú nainštalované na vašom počítači so serverom SQL Server, použite jednu z nasledujúcich možností:

  • Zobrazte knižnicu v predvolenom nastavení, ak máte povolenia na priečinok.
  • Spustite príkaz z príkazu R a vypíšte balíky v umiestnení knižnice R_SERVICES
  • V inštancii použite uloženú procedúru, ako je uvedené nižšie:

    EXECUTE sp_execute_external_script @language =N "R" ,@script = N "str(OutputDataSet); packagematrix<- installed.packages(); NameOnly <- packagematrix[,1]; OutputDataSet <- as.data.frame(NameOnly);" ,@input_data_1 = N "VYBERTE 1 ako stĺpec" SO SADA VÝSLEDKOV ((PackageName nvarchar (250 )))

Povedzme si niečo o programovacom jazyku s názvom R. Nedávno ste si na našich blogoch mohli prečítať články o oblastiach, kde jednoducho potrebujete mať po ruke výkonný jazyk na prácu so štatistikami a grafmi. A R je len jedným z nich. Pre nováčika vo svete programovania bude dosť ťažké tomu uveriť, ale dnes je R už populárnejšie ako SQL, aktívne sa používa v komerčných organizáciách, výskume a univerzitách.

Bez toho, aby sme sa zaoberali pravidlami, syntaxou a konkrétnymi spôsobmi použitia, pozrime sa na základné knihy a zdroje, ktoré vám pomôžu naučiť sa R ​​od nuly.

Čo je jazyk R, prečo ho potrebujete a ako ho môžete múdro používať, sa môžete naučiť od úžasného Ruslana Kuptsova, ktorý viedol o niečo menej ako pred rokom v rámci GeekWeek-2015.

knihy

Teraz, keď je v hlave istý poriadok, môžete začať čítať literatúru, je jej našťastie viac než dosť. Začnime domácimi autormi:


Internetové zdroje

Každý, kto sa chce naučiť akýkoľvek programovací jazyk, musí pri hľadaní vedomostí navštíviť dva zdroje: oficiálnu webovú stránku jeho vývojárov a najväčšiu online komunitu. Dobre. Nerobme výnimku pre R:

Ale opäť, keď sme znepokojení tým, ktorí sa ešte nemali čas naučiť angličtinu, ale naozaj sa chcú naučiť R, spomeňme niekoľko ruských zdrojov:

Medzitým si doplňte obrázok malým zoznamom anglických, no nie menej vzdelávacích stránok:

CRAN je vlastne miesto, kde si môžete stiahnuť vývojové prostredie R do svojho počítača.

Quick-R - stručne a zrozumiteľne o štatistikách, spôsoboch ich spracovania a jazyku R;

Burns-Stat - o R a jeho predchodcovi S s obrovským množstvom príkladov;

R for Data Science je ďalšia kniha od Garretta Grolemunda, preložená do formátu online učebnice;

Awesome R - výber toho najlepšieho kódu z oficiálnej webovej stránky uverejneného na našom milovanom GitHub;

Mran - jazyk R od Microsoftu;

Tutorial R je ďalší zdroj s usporiadanými informáciami z oficiálnej webovej stránky.

V auguste 1993 ohlásili dvaja mladí novozélandskí vedci z University of Auckland svoj nový vývoj, ktorý nazvali R. Podľa tvorcov Roberta Gentlemana a Rossa Ihaku malo ísť o novú implementáciu jazyka S, odlišnú od S-PLUS s niektorými detailmi, napríklad manipulácia s globálnymi a lokálnymi premennými, ako aj práca s pamäťou. V skutočnosti nevytvorili úplný analóg S-PLUS, ale novú „pobočku“ na „strome S“. Mnohé z vecí, ktoré odlišujú R od S-PLUS, sú spôsobené vplyvom jazyka Scheme (funkčný programovací jazyk, jeden z najpopulárnejších dialektov jazyka Lisp).

Do polovice roku 2016 R dobehol SAS a SPSS (ktoré sú platené) a stal sa jedným z troch najbežnejších systémov na spracovanie štatistických informácií. Treba tiež poznamenať, že R je jedným z 10 všeobecných programovacích jazykov.

možnosti

V prostredí R je implementovaných veľa štatistických metód: lineárne a nelineárne modely, testovanie štatistických hypotéz, analýza časových radov, klasifikácia, zhlukovanie, grafická vizualizácia. Jazyk R vám umožňuje definovať vlastné funkcie. Mnoho R funkcií je napísaných v samotnom R Pre výpočtovo zložité problémy je možné implementovať funkcie v C, C++ a Fortran. Pokročilí používatelia môžu priamo pristupovať k objektom R z kódu C. R je prísnejší objektovo orientovaný jazyk ako väčšina jazykov pre štatistické výpočty. Grafické funkcie vám umožňujú vytvárať grafy dobrej kvality tlače s možnosťou zahrnúť matematické symboly. Má svoj vlastný formát dokumentácie podobný LaTeXu.

Aj keď sa R ​​najčastejšie používa na štatistické výpočty, možno ho použiť aj ako nástroj na maticové výpočty. Podobne ako MATLAB, aj R zaobchádza s výsledkom ľubovoľnej číselnej operácie ako s vektorom jednotkovej dĺžky. Všeobecne povedané, v R nie sú žiadne skaláre.

Skriptá

Jednoduché otvorenie relácie R a zadávanie príkazov do okna programu jeden po druhom je len jedným z možných spôsobov práce. Oveľa produktívnejšou metódou, ktorá je zároveň veľkou výhodou R, je tvorba skriptov (programov), ktoré sa následne načítajú do R a sú ním interpretované. Od samého začiatku svojej práce by ste mali vytvárať skripty aj pre úlohy, ktoré sa zdajú triviálne - to výrazne ušetrí čas v budúcnosti. Vytváranie scenárov z akéhokoľvek dôvodu a dokonca aj bez špeciálneho dôvodu je jedným zo základov pracovnej kultúry v R.

Balíčky

Ďalšou dôležitou výhodou R je dostupnosť mnohých rozšírení alebo balíkov. Niektorí základné balíčky sú prítomné hneď po nainštalovaní R na počítač, bez nich systém jednoducho nefunguje (napríklad balík s názvom base, alebo balík grDevices, ktorý riadi výstup grafov), ako aj „odporúčané“ balíky (balík pre špecializovaný klaster klastrovej analýzy, balík na analýzu nelineárnych modelov nlme a iné). Okrem toho si môžete nainštalovať ktorýkoľvek z takmer osemtisíc (k polovici roku 2016) balíkov dostupných na CRAN. Ak máte prístup na internet, môžete to urobiť priamo z R pomocou príkazu install.packages().

Odkazy

  • CRAN (Comprehensive R Archive Network) je centrálny úložný a distribučný systém pre R a jeho balíky.

K napísaniu tohto článku ma podnietila nasledujúca téma: Hľadanie ideálneho príspevku alebo hádanky Habr. Faktom je, že po oboznámení sa s jazykom R sa na akékoľvek pokusy o výpočet niečoho v Exceli pozerám mimoriadne úkosom. Ale musím priznať, že s R som sa zoznámil len pred týždňom.

Cieľ: Zhromažďovať údaje z vášho obľúbeného HabraHabr pomocou jazyka R a vykonať v skutočnosti to, na čo bol jazyk R vytvorený, konkrétne: štatistickú analýzu.

Takže po prečítaní tejto témy sa dozviete:

  • Ako môžete použiť R na extrahovanie údajov z webových zdrojov
  • Ako transformovať údaje pre neskoršiu analýzu
  • Aké zdroje sa dôrazne odporúčajú prečítať každému, kto chce lepšie spoznať R?

Od čitateľa sa očakáva, že bude dostatočne nezávislý na to, aby sa oboznámil so základnými konštrukciami jazyka. Najlepšie sú na to odkazy na konci článku.

Príprava

Budeme potrebovať nasledujúce zdroje:

Po inštalácii by ste mali vidieť niečo takéto:

V pravom dolnom paneli na karte Balíky nájdete zoznam nainštalovaných balíkov. Budeme musieť dodatočne nainštalovať nasledovné:

  • Rcurl - pre prácu so sieťou. Každý, kto pracoval s CURL, okamžite pochopí všetky príležitosti, ktoré sa otvárajú.
  • XML - balík pre prácu s DOM stromom XML dokumentu. Potrebujeme funkčnosť na vyhľadávanie prvkov pomocou xpath
Kliknite na „Inštalovať balíky“, vyberte tie, ktoré potrebujete, a potom ich začiarknite, aby sa načítali do aktuálneho prostredia.

Získavanie údajov

Ak chcete získať objekt DOM dokumentu prijatého z internetu, postupujte podľa týchto riadkov:
url<-"http://habrahabr.ru/feed/posts/habred/page10/" cookie<-"Мои сверхсекретные печеньки" html<-getURL(url, cookie=cookie) doc<-htmlParse(html)
Venujte prosím pozornosť odosielaniu cookies. Ak chcete experiment zopakovať, budete musieť nahradiť súbory cookie, ktoré váš prehliadač dostane po prihlásení na stránku. Ďalej musíme získať údaje, ktoré nás zaujímajú, a to:
  • Keď bol príspevok zverejnený
  • Koľko bolo zobrazení?
  • Koľko ľudí si pridalo tento záznam medzi svoje obľúbené?
  • Koľko kliknutí na +1 a -1 bolo (celkovo)
  • Koľko kliknutí na tlačidlo +1 bolo zaznamenaných?
  • Koľko -1
  • Súčasné hodnotenie
  • Počet komentárov
Bez toho, aby som zachádzal do prílišných podrobností, dám vám iba kód:
publikovaný<-xpathSApply(doc, "//div[@class="published"]", xmlValue) pageviews<-xpathSApply(doc, "//div[@class="pageviews"]", xmlValue) favs<-xpathSApply(doc, "//div[@class="favs_count"]", xmlValue) scoredetailes<-xpathSApply(doc, "//span[@class="score"]", xmlGetAttr, "title") scores<-xpathSApply(doc, "//span[@class="score"]", xmlValue) comments<-xpathSApply(doc, "//span[@class="all"]", xmlValue) hrefs<-xpathSApply(doc, "//a[@class="post_title"]", xmlGetAttr, "href")
Tu sme použili xpath vyhľadávanie prvkov a atribútov.
Ďalej sa dôrazne odporúča vytvoriť z prijatých údajov data.frame - ide o analóg databázových tabuliek. Bude možné podávať požiadavky rôznej úrovne zložitosti. Niekedy žasnete nad tým, ako elegantne dokážete urobiť to či ono v R.
príspevky<-data.frame(hrefs, published, scoredetailes, scores, pageviews, favs, comments)
Po vygenerovaní data.frame budete musieť opraviť prijaté údaje: previesť riadky na čísla, získať skutočný dátum v normálnom formáte atď. Robíme to takto:

Príspevky $komentáre<-as.numeric(as.character(posts$comments)) posts$scores<-as.numeric(as.character(posts$scores)) posts$favs<-as.numeric(as.character(posts$favs)) posts$pageviews<-as.numeric(as.character(posts$pageviews)) posts$published<-sub(" декабря в ","/12/2012 ",as.character(posts$published)) posts$published<-sub(" ноября в ","/11/2012 ",posts$published) posts$published<-sub(" октября в ","/10/2012 ",posts$published) posts$published<-sub(" сентября в ","/09/2012 ",posts$published) posts$published<-sub("^ ","",posts$published) posts$publishedDate<-as.Date(posts$published, format="%d/%m/%Y %H:%M")

Je tiež užitočné pridať ďalšie polia, ktoré sa vypočítajú z tých, ktoré už boli prijaté:
skóre rozdelené<-sapply(strsplit(as.character(posts$scoredetailes), "\\D+", perl=TRUE),unlist) if(class(scoressplitted)=="matrix" && dim(scoressplitted)==4) { scoressplitted<-t(scoressplitted) posts$actions<-as.numeric(as.character(scoressplitted[,1])) posts$plusactions<-as.numeric(as.character(scoressplitted[,2])) posts$minusactions<-as.numeric(as.character(scoressplitted[,3])) } posts$weekDay<-format(posts$publishedDate, "%A")
Tu sme previedli známe správy vo forme „Total 35: 29 a ↓6“ na pole údajov o tom, koľko akcií bolo vykonaných, koľko plusov bolo a koľko mínusov.

V tomto bode môžeme povedať, že všetky dáta boli prijaté a skonvertované do formátu pripraveného na analýzu. Vyššie uvedený kód som naformátoval ako funkciu pripravenú na použitie. Na konci článku nájdete odkaz na zdroj.

Ale pozorný čitateľ si už všimol, že takto sme dostali dáta len za jednu stranu, aby sme ich získali za celú sériu. Na získanie údajov pre celý zoznam stránok bola napísaná nasledujúca funkcia:

GetPostsForPages<-function(pages, cookie, sleep=0) { urls<-paste("http://habrahabr.ru/feed/posts/habred/page", pages, "/", sep="") ret<-data.frame() for(url in urls) { ret<-rbind(ret, getPosts(url, cookie)) Sys.sleep(sleep) } return(ret) }
Tu používame systémovú funkciu Sys.sleep, aby sme náhodou nespôsobili habra efekt na samotný habr :)
Táto funkcia sa navrhuje používať takto:
príspevky<-getPostsForPages(10:100, cookie,5)
Takto stiahneme všetky stránky od 10 do 100 s pauzou 5 sekúnd. Stránky do 10 nás nezaujímajú, keďže tam zatiaľ nie sú viditeľné hodnotenia. Po pár minútach čakania sú všetky naše údaje v premennej príspevky. Odporúčam ich hneď uložiť, aby ste zakaždým nerušili hub! Toto sa robí takto:
write.csv(posts, file="posts.csv")
A čítame to takto:
príspevky<-read.csv("posts.csv")

Hurá! Naučili sme sa, ako získať štatistické údaje od Habra a uložiť ich lokálne pre ďalšiu analýzu!

Analýza dát

Túto časť nechám nevypovedanú. Vyzývam čitateľa, aby sa sám pohral s údajmi a urobil si vlastné dlhotrvajúce závery. Skúste napríklad analyzovať závislosť nálady plusových a mínusových ľudí v závislosti od dňa v týždni. Uvediem len 2 zaujímavé závery, ktoré som urobil.
Používatelia Habr sú oveľa ochotnejší hlasovať za ako proti.
Vidno to z nasledujúceho grafu. Všimnite si, o koľko jednotnejší a širší je „oblak“ mínusov ako šírenie plusov. Korelácia medzi kladmi a počtom videní je oveľa silnejšia ako medzi zápormi. Inými slovami: pridávame bez rozmýšľania, ale mínusujeme za akciu!
(Ospravedlňujem sa za nápisy na grafoch: ešte som neprišiel na to, ako ich správne zobraziť v ruštine)

V skutočnosti existuje niekoľko tried príspevkov
Toto tvrdenie bolo v spomínanom príspevku použité ako dané, ale chcel som sa o tom uistiť v skutočnosti. Na to stačí vypočítať priemerný podiel plusov na celkovom počte akcií, to isté pre mínusy, a vydeliť druhú prvou. Ak by bolo všetko homogénne, tak by sme na histograme nemali pozorovať veľa lokálnych vrcholov, ale sú tam.


Ako vidíte, existujú výrazné vrcholy okolo 0,1, 0,2 a 0,25. Vyzývam čitateľa, aby sám našiel a „pomenoval“ tieto triedy.
Chcel by som poznamenať, že R je bohaté na algoritmy na zhlukovanie údajov, aproximáciu, testovanie hypotéz atď.

Užitočné zdroje

Ak sa chcete naozaj ponoriť do sveta R, odporúčam nasledujúce odkazy. Podeľte sa o svoje zaujímavé blogy a stránky na tému R v komentároch Je tu niekto, kto píše o R v ruštine?