Programovanie

Tutorial R: Ako importovať dáta do R.

Získajte kompletnú knihu
Practical R for Mass Communication and Journalism MSRP 59,95 dolárov Pozri to

Tento článok bol so súhlasom vydavateľa vybratý z článku „Praktické R pre masovú komunikáciu a žurnalistiku“. © 2019 Taylor & Francis Group, LLC.

Predtým, ako budete môcť analyzovať a vizualizovať údaje, musíte tieto údaje dostať do R. Existuje niekoľko spôsobov, ako to urobiť, v závislosti od toho, ako sú vaše údaje naformátované a kde sa nachádzajú.

Funkcia, ktorú používate na import údajov, zvyčajne závisí od formátu súboru údajov. Napríklad v základe R môžete importovať súbor CSV pomocou read.csv (). Hadley Wickham vytvoril balíček s názvom readxl, ktorý, ako by ste čakali, má funkciu na čítanie v súboroch programu Excel. Existuje ďalší balíček, googlesheets, na načítanie údajov z tabuliek Google.

Ak si však nechcete všetko pamätať, je tu nepokoj.

Kúzlo Rio

„Cieľom programu rio je čo najjednoduchšie uľahčenie vstupu a výstupu dátových súborov [import / výstup] v R implementáciou troch jednoduchých funkcií v štýle nožov švajčiarskej armády,“ uvádza sa na stránke projektu GitHub. Tieto funkcie sú import (), export()a konvertovať ().

Balík rio má teda iba jednu funkciu na načítanie v mnohých rôznych typoch súborov: import (). Ak ty import ("myfile.csv"), vie používať funkciu na čítanie súboru CSV. import ("myspreadsheet.xlsx") funguje rovnako. V skutočnosti rio spracováva viac ako dve desiatky formátov vrátane údajov oddelených tabulátormi (s príponou .tsv), JSON, Stata a údajov formátu pevnej šírky (.fwf).

Balíky potrebné pre tento tutoriál

  • rio
  • htmltab
  • readxl
  • googlesheets
  • pacman
  • správca
  • rmiscutils (pm GitHub) alebo readr
  • tibble

Ak chcete po analýze údajov uložiť výsledky ako CSV, tabuľku programu Excel alebo iné formáty, program Rio export() funkcia to zvládne.

Ak ešte nemáte balík rio vo svojom systéme, nainštalujte si ho teraz s install.packages ("rio").

Nastavil som niekoľko vzorových údajov s údajmi o snehu v Bostone. Môžete prejsť na //bit.ly/BostonSnowfallCSV a pravým tlačidlom myši uložiť súbor ako BostonWinterSnowfalls.csv do svojho aktuálneho pracovného adresára projektu R. Jedným z bodov skriptovania je však nahradenie manuálnej práce - zdĺhavej alebo inej - automatizáciou, ktorá sa ľahko reprodukuje. Namiesto kliknutia na stiahnutie môžete použiť písmeno R. stiahnuť súbor funkcia so syntaxou download.file ("url", "destinationFileName.csv"):

download.file ("// bit.ly/BostonSnowfallCSV", "BostonWinterSnowfalls.csv")

Predpokladá sa, že váš systém presmeruje z tejto skratky adresy URL Bit.ly a úspešne nájde skutočnú adresu URL súboru //raw.githubusercontent.com/smach/NICAR15data/master/BostonWinterSnowfalls.csv. Príležitostne som mal problémy s prístupom k webovému obsahu na starých počítačoch so systémom Windows. Ak máte jeden z nich a tento odkaz Bit.ly nefunguje, môžete zameniť skutočnú adresu URL odkazu Bit.ly. Ďalšou možnosťou je inovácia vášho počítača so systémom Windows na Windows 10, ak je to možné, aby ste zistili, či to funguje dobre.

Ak si prajete, aby program rio mohol iba importovať údaje priamo z adresy URL, v skutočnosti to môže byť, a dostanem sa k tomu v nasledujúcej časti. Bod z toto v tejto časti je nácvik práce s miestnym súborom.

Keď už máte testovací súbor v lokálnom systéme, môžete tieto dáta načítať do R objektu zvaného snowdata s kódom:

snowdata <- rio :: import ("BostonWinterSnowfalls.csv")

Je možné, že vás program rio požiada o opätovné stiahnutie súboru v binárnom formáte. V takom prípade budete musieť spustiť

download.file ("// bit.ly/BostonSnowfallCSV", "BostonWinterSnowfalls.csv", mode = "wb")

Uistite sa, že používate možnosti dokončovania kariet RStudia. Ak píšete Rio :: a počkajte, získate zoznam všetkých dostupných funkcií. Typ sneh a počkajte a ako možnosť by sa mal zobraziť celý názov vášho objektu. Medzi návrhmi na automatické dokončovanie sa môžete pohybovať pomocou klávesov so šípkami nahor a nadol. Po zvýraznení požadovanej možnosti stlačte kláves Tab (alebo Enter), aby ste do svojho skriptu pridali celý názov objektu alebo funkcie.

Mali by ste vidieť objekt snehové údaje sa zobrazia na karte prostredia v pravom hornom paneli RStudio. (Ak sa v tomto pravom hornom paneli namiesto vášho prostredia zobrazuje váš príkaz História, vyberte kartu Životné prostredie.)

Taylor & Francis Group

snehové údaje by malo ukazovať, že má 76 „obs.“ - pozorovaní alebo riadkov - a dve premenné alebo stĺpce. Ak kliknete na šípku vľavo od snehové údaje Ak chcete rozšíriť zoznam, uvidíte dva názvy stĺpcov a typ údajov, ktoré každý stĺpec obsahuje. The Zimné je reťazec znakov a znak Celkom stĺpec je číselný. Mali by ste tiež byť schopní vidieť prvých pár hodnôt každého stĺpca na table Environment.

Taylor & Francis Group

Kliknite na slovo snehové údaje samotná na karte Prostredie, aby ste získali viac údajov v tabuľkovom formáte. Rovnaký pohľad môžete získať z konzoly R pomocou príkazu Zobraziť (snowdata) (to musí byť veľké písmeno V v zobrazení -vyhliadka nebude fungovať). Poznámka: snehové údaje nie je v úvodzovkách, pretože odkazujete na názov súboru Objekt R vo vašom prostredí. V rio :: import veliť skôr, BostonWinterSnowfalls.csv je v úvodzovkách, pretože to nie je objekt R. je to názov reťazca znakov súboru mimo R.

Taylor & Francis Group

Toto zobrazenie má niekoľko tabuľkových správ. Kliknutím na hlavičku stĺpca ho zoradíte podľa hodnôt stĺpca vzostupne. kliknutím na záhlavie toho istého stĺpca podruhé zoradíte zostupne. K dispozícii je vyhľadávacie pole, kde nájdete riadky zodpovedajúce určitým znakom.

Ak kliknete na ikonu Filter, získate filter pre každý stĺpec. The Zimné stĺpec znakov funguje podľa očakávania a filtruje všetky riadky, ktoré obsahujú znaky, ktoré napíšete. Ak kliknete na ikonu Celkom filter číselných stĺpcov, staršie verzie programu RStudio však zobrazujú posúvač, zatiaľ čo novšie verzie zobrazujú histogram a pole na filtrovanie.

Importujte súbor z webu

Ak chcete stiahnuť a importovať súbor z webu, môžete to urobiť, ak je verejne dostupný a vo formáte ako Excel alebo CSV. Vyskúšajte

snowdata <- rio :: import ("// bit.ly/BostonSnowfallCSV", formát)

Mnoho systémov dokáže sledovať adresu URL presmerovania do súboru aj po prvom zobrazení chybovej správy, pokiaľ uvediete formát ako „CSV“ pretože tu uvedený názov súboru neobsahuje .csv. Ak ten váš nebude fungovať, použite namiesto toho adresu URL //raw.githubusercontent.com/smach/R4JournalismBook/master/data/BostonSnowfall.csv.

Program rio môže tiež importovať dobre naformátované tabuľky HTML z webových stránok, ale tabuľky musia byť extrémne dobre naformátovaný. Povedzme, že si chcete stiahnuť tabuľku s hodnotením závažnosti Národnej meteorologickej služby pre snehové búrky. Stránka s regionálnymi indexmi snehových zrážok Národných centier pre informácie o životnom prostredí má iba jednu dobre spracovanú tabuľku, takže tento kód by mal fungovať:

rsi_description <- rio :: import ("//www.ncdc.noaa.gov/snow-and-ice/rsi/", format = "html")

Znova nezabudnite, že v tomto prípade musíte zahrnúť formát format = "html" . pretože samotná adresa URL neposkytuje žiadny údaj o tom, o aký typ súboru ide. Ak adresa URL obsahovala názov súboru s .html rozšírenie, rio by vedel.

V reálnom živote sa však údaje z webu objavujú zriedka v takej úhľadnej a izolovanej podobe. Dobrou voľbou pre prípady, ktoré nie sú tak dobre spracované, je často balík htmltab. Nainštalujte ho pomocou install.packages ("htmltab"). Funkcia balíka na čítanie tabuľky HTML sa nazýva aj htmltab. Ale ak spustíte toto:

knižnica (htmltab) mestská tabuľka <- htmltab ("// en.wikipedia.org/wiki/List_of_United_States_cities_by_population") str (mestská tabuľka)

vidíte, že nemáte správnu tabuľku, pretože dátový rámec obsahuje jeden objekt. Pretože som nešpecifikoval ktoré tabuľka, vytiahla prvú tabuľku HTML na stránke. To sa nestalo to, čo by som chcel. Nemám chuť importovať všetky tabuľky na stránke, kým nenájdem tú pravú, ale našťastie mám rozšírenie pre Chrome s názvom Table Capture, ktoré mi umožňuje zobraziť zoznam tabuliek na stránke.

Naposledy som skontroloval tabuľku 5 s viac ako 300 riadkami, ktorú som chcel. Ak to teraz nefunguje, skúste nainštalovať program Table Capture v prehliadači Chrome a skontrolovať, ktorú tabuľku si chcete stiahnuť.

Skúsim to znova, zadám tabuľku 5 a potom uvidím, aké názvy stĺpcov sú v novej mestskej tabuľke. Všimnite si, že v nasledujúcom kóde som vložil mestská tabuľka <- htmltab () príkaz na viac riadkov. To preto, aby to neprebehlo cez okraj - môžete mať všetko na jednom riadku. Ak sa od zverejnenia tohto článku zmenilo číslo tabuľky, nahraďte ju čo = 5 so správnym počtom.

Namiesto použitia stránky na Wikipédii môžete nahradiť adresu URL Wikipédie adresou URL kópie súboru, ktorý som vytvoril. Tento súbor je na //bit.ly/WikiCityList. Ak chcete použiť túto verziu, napíšte bit.ly/WikiCityList do prehliadača, potom skopírujte zdĺhavú adresu URL, na ktorú presmeruje, a použite ju že namiesto adresy URL Wikipédie v nižšie uvedenom kóde:

knižnica (htmltab) mestský stôl <- htmltab ("// en.wikipedia.org/wiki/List_of_United_States_cities_by_population", čo = 5) stĺpov (mestský stôl)

Ako som to vedela ktoré bol argument, ktorý som potreboval na uvedenie čísla tabuľky? Čítal som htmltab pomocníka pomocou príkazu ? htmltab. Zahŕňalo to všetky dostupné argumenty. Naskenoval som možnosti a “ktoré vektor dĺžky jeden na identifikáciu tabuľky v dokumente “vyzeral dobre.

Všimnite si tiež, že som použil colnames (citytable) namiesto mená (mestská tabuľka) zobraziť názvy stĺpcov. Buď bude fungovať. Základňa R má tiežnázvy riadkov () funkcia.

Tieto tabuľkové výsledky sú každopádne oveľa lepšie, aj keď to vidíte z behu str (mestská tabuľka) že pár stĺpcov, ktoré by mali byť číslami, prišlo ako reťazce znakov. Môžete to vidieť tak podľa chr vedľa názvu stĺpca a úvodzoviek okolo hodnôt ako 8,550,405.

Toto je jedna z malých nepríjemností R: R to všeobecne nechápe 8,550 je číslo. S týmto problémom som sa vysporiadal sám tak, že som do vlastného balíka rmiscutils napísal svoju vlastnú funkciu a všetky tieto „reťazce znakov“, ktoré sú skutočne číslami s čiarkami, som premenil späť na čísla. Balík si môže ktokoľvek stiahnuť z GitHubu a použiť ho.

Najpopulárnejším spôsobom inštalácie balíkov z GitHubu je použitie balíka s názvom devtools. devtools je mimoriadne výkonný balík určený hlavne pre ľudí, ktorí chcú písať svoje vlastné balíkov a obsahuje niekoľko spôsobov inštalácie balíkov z iných miest okrem CRAN. Inštalácia devtools však zvyčajne vyžaduje niekoľko ďalších krokov na inštaláciu v porovnaní s typickým balíkom, a preto nechám otravné úlohy systému a administrátora nechať úplne nevyhnutné.

Balík pacman však inštaluje aj balíčky zo zdrojov iných ako CRAN, ako je GitHub. Ak ste to ešte neurobili, nainštalujte si pacman pomocou install.packages ("pacman").

pacman’s p_install_gh ("username / packagerepo") funkcia sa inštaluje z repozitára GitHub.

p_load_gh ("username / packagerepo")bremená balík do pamäte, ak už vo vašom systéme existuje, a najskôr nainštaluje, potom načíta balík z GitHubu, ak lokálne neexistuje.

Môj balík rmisc utilities nájdete na smach / rmiscutils. Bež pacman :: p_load_gh ("smach / rmiscutils") nainštalovať môj balíček rmiscutils.

Poznámka: Alternatívny balík na inštaláciu balíkov z GitHubu sa nazýva diaľkové ovládače, cez ktoré si môžete nainštalovaťinstall.packages ("diaľkové ovládače"). Jeho hlavným účelom je inštalácia balíkov zo vzdialených úložísk, ako je GitHub. Môžete sa pozrieť na súbor pomocníka s pomoc (balíček = "diaľkové ovládače").

A pravdepodobne najchladnejším zo všetkých je balíček s názvom githubinstall. Jeho cieľom je uhádnuť repo, kde sa balík nachádza. Nainštalujte ho cezinstall.packages ("githubinstall"); potom môžete nainštalovať môj balík rmiscutils pomocougithubinstall :: gh_install_packages ("rmiscutils"). Zobrazí sa otázka, či chcete balík nainštalovať na smach / rmisutils (ty robíš).

Teraz, keď ste nainštalovali moju zbierku funkcií, môžete používať moju number_with_commas () funkcia na zmenu tých znakových reťazcov, ktoré by mali byť číslami späť na čísla. Dôrazne navrhujem namiesto úpravy existujúceho stĺpca pridať do dátového rámca nový stĺpec - to je dobrá prax v analýze dát bez ohľadu na to, akú platformu používate.

V tomto príklade zavolám nový stĺpec PopEst2017. (Ak bola tabuľka odvtedy aktualizovaná, použite príslušné názvy stĺpcov.)

knižnica (rmiscutils) mestská tabuľka $ PopEst2017 <- number_with_commas (mestská tabuľka $ `2017 odhad`)

Môj balíček rmiscutils nie je mimochodom jediný spôsob, ako sa vysporiadať s importovanými číslami, ktoré majú čiarky. Potom, čo som vytvoril svoj balíček rmiscutils a jeho number_with_commas () funkcie sa zrodil balíček tidyverse readr. readr tiež obsahuje funkciu, ktorá mení reťazce znakov na čísla, parse_number ().

Po inštalácii readr môžete vygenerovať čísla zo stĺpca odhadu 2017 pomocou readr:

mestská tabuľka $ PopEst2017 <- readr :: parse_number (mestská tabuľka $ `2017 odhad`)

Jedna výhoda readr :: parse_number () je, že si môžete definovať svoje vlastné miestne nastavenie () na kontrolu vecí, ako je kódovanie a desatinné miesta, ktoré by mohli zaujímať čitateľov mimo USA. Bež ? parse_number pre viac informácií.

Poznámka: Ak ste nepoužili vyplnenie karty pre stĺpec odhadu za rok 2017, mohli ste mať problém s názvom tohto stĺpca, ak má v čase, keď spúšťate tento kód, medzeru. V mojom kóde vyššie si všimnite, že tam sú spätné jednoduché úvodzovky (`) okolo názvu stĺpca. Je to tak preto, lebo existujúci názov mal v sebe medzeru, ktorú by ste v R. nemali mať. Názov stĺpca má ďalší problém: Začína sa číslom, zvyčajne tiež písmenom R-nie. RStudio to vie a automaticky pridáva potrebné spätné citácie okolo názvu pomocou automatického dopĺňania kariet.

Bonusový tip: Existuje balíček R (samozrejme, že existuje!), Ktorý sa volá správca a ktorý dokáže automaticky opraviť problémové názvy stĺpcov importovaných zo zdroja údajov, ktorý nie je vhodný pre R. Nainštalujte ho pomocou install.packages ("správca"). Potom môžete vytvoriť nové čisté názvy stĺpcov pomocou správcu clean_names () funkcia.

Teraz namiesto zmeny názvov stĺpcov v pôvodnom dátovom rámci vytvorím úplne nový dátový rámec a na pôvodných dátach spustím janitor's clean_names (). Potom skontrolujte názvy stĺpcov dátového rámca pomocou mená ():

citytable_cleaned <- správca :: clean_names (citytable)

názvy (citytable_cleaned)

Uvidíte, že medzery boli zmenené na podčiarkovníky, ktoré sú v názvoch premenných R legálne (rovnako ako bodky). A všetky názvy stĺpcov, ktoré sa predtým začínali číslom, majú teraz znak X na začiatku.

Ak nechcete strácať pamäť tým, že máte dve kópie v podstate rovnakých údajov, môžete objekt R z pracovnej relácie odstrániť pomocourm () funkcia: rm (mestská tabuľka).

Importujte údaje z balíkov

Existuje niekoľko balíkov, ktoré vám umožňujú prístup k údajom priamo z R. Jeden z nich je quantmod, ktorý vám umožňuje získať niektoré vládne a finančné údaje z USA priamo do R.

Ďalším je príhodne pomenovaný balík weatherdata na serveri CRAN. Môže načítať údaje z Weather Underground API, ktoré obsahuje informácie o mnohých krajinách po celom svete.

Balík rnoaa, projekt zo skupiny rOpenSci, využíva niekoľko rôznych súborov údajov Národného úradu pre oceán a atmosféru, vrátane informácií o dennom podnebí, bóji a búrkach.

Ak vás zaujímajú údaje o štátnej správe alebo samospráve v USA alebo Kanade, môžete vyskúšať RSocrata a zistiť, či tam agentúra, ktorá vás zaujíma, zverejňuje údaje. Zatiaľ som nenašiel kompletný zoznam všetkých dostupných súborov údajov Socrata, ale na stránke //www.opendatanetwork.com je stránka na vyhľadávanie. Buďte však opatrní: Existujú sady nahrané komunitou spolu s oficiálnymi vládnymi údajmi, takže predtým, ako sa na ne budete spoliehať viac ako na prax R, skontrolujte ich vlastníka a zdroj nahrávania. „Dátová sada ODN“ vo výsledku znamená, že ide o súbor nahraný niekým z širokej verejnosti. Oficiálne vládne súbory dát bývajú zverejnené na adresách URL ako //data.CityOrStateName.gov a//data.CityOrStateName.us.

Ďalšie balíčky na import údajov nájdete v mojej prehľadávateľnej tabuľke na adrese //bit.ly/RDataPkgs. Ak pracujete s vládnymi údajmi USA, mohol by vás zaujímať najmä censusapi a tidycensus, ktoré obidve využívajú údaje amerického sčítania ľudu. Medzi ďalšie užitočné vládne dátové balíčky patrí eu.us.opendata od vlád USA a Európskej únie, ktoré uľahčujú porovnávanie údajov v obidvoch regiónoch, a údaje o sčítaní ľudu v Kanade.

Keď údaje nie sú ideálne naformátované

Vo všetkých týchto prípadoch vzorových údajov boli údaje nielen dobre naformátované, ale aj ideálne: Keď som ich našiel, boli dokonale štruktúrované pre R. Čo tým myslím? Bol obdĺžnikový, pričom každá bunka mala namiesto zlúčených buniek jednu hodnotu. A prvý riadok mal hlavičky stĺpcov, na rozdiel od povedzme riadku titulu veľkým písmom vo viacerých bunkách, aby vyzeral pekne - alebo vôbec nemal hlavičky stĺpcov.

Nakladanie s neupravenými údajmi sa môže, bohužiaľ, poriadne skomplikovať. Existuje však niekoľko bežných problémov, ktoré sa dajú ľahko vyriešiť.

Začínajúce riadky, ktoré nie sú súčasťou údajov. Ak viete, že niekoľko prvých riadkov tabuľky programu Excel nemá požadované údaje, môžete aplikácii Rio povedať, aby preskočila jeden alebo viac riadkov. Syntax je rio :: import ("mySpreadsheet.xlsx", skip = 3) vylúčiť prvé tri riadky. preskočiť berie celé číslo.

V tabuľke nie sú žiadne názvy stĺpcov. Pri predvolenom importe sa predpokladá, že prvý riadok hárka obsahuje názvy stĺpcov. Ak vaše údaje nie mať hlavičky, prvý riadok vašich údajov môže skončiť ako hlavičky stĺpcov. Ak sa tomu chcete vyhnúť, použite rio :: import ("mySpreadsheet.xlsx", col_names = FALSE) takže R vygeneruje predvolené hlavičky X0, X1, X2 atď. Alebo použite syntax ako napr rio :: import ("mySpreadsheet.xlsx", col_names = c ("Mesto", "Štát", "Obyvateľstvo")) na nastavenie vlastných názvov stĺpcov.

Ak je v tabuľke viac kariet, kliknite na ikonu ktoré argument prepíše predvolené čítanie v prvom pracovnom hárku. rio :: import ("mySpreadsheet.xlsx", ktorý = 2) znie v druhom pracovnom liste.

Čo je to dátový rámec? A čo môžete s jedným robiť?

rio importuje tabuľku alebo súbor CSV ako súbor R dátový rámec. Ako zistíte, či máte dátový rámec? V prípade snehové údaje, trieda (snowdata) vráti triedu alebo typ objektu, o ktorý sa jedná. str (snowdata) tiež vám povie triedu a pridá o niečo viac informácií. Mnoho informácií, ktoré vidíte str () je podobné tomu, čo ste videli pre tento príklad v podokne prostredia RStudio: snehové údaje má 76 pozorovaní (riadky) a dve premenné (stĺpce).

Dátové rámce sú trochu ako tabuľky, pretože majú stĺpce a riadky. Dátové rámce sú však štruktúrovanejšie. Každý stĺpec v dátovom rámci je R. vektor, čo znamená, že každá položka v stĺpci musí byť rovnakého dátového typu. Jedným stĺpcom môžu byť všetky čísla a druhým stĺpcom môžu byť všetky reťazce, ale v rámci stĺpca musia byť údaje konzistentné.

Ak máte stĺpec dátového rámca s hodnotami 5, 7, 4 a „budúcou hodnotou“, R nebude jednoducho nešťastný a spôsobí chybu. Namiesto toho prinúti všetky vaše hodnoty, aby boli rovnakého dátového typu. Pretože „hodnota, ktorá má prísť“, sa nedá zmeniť na číslo, 5, 7 a 4 sa nakoniec premenia na reťazce znakov "5", "7"a "4". Zvyčajne to nie je to, čo chcete, takže je dôležité vedieť, aký typ údajov je v jednotlivých stĺpcoch. Jedna zatúlaná hodnota reťazca znakov v stĺpci s 1 000 číslami môže zmeniť celú vec na znaky. Ak chcete čísla, nezabudnite ich mať!

R má spôsoby, ako odkazovať na chýbajúce údaje, ktoré by nepokazili zvyšok vašich stĺpcov: NA znamená „nie je k dispozícii“.

Dátové rámce sú obdĺžnikové: Každý riadok musí mať rovnaký počet záznamov (aj keď niektoré môžu byť prázdne) a každý stĺpec musí obsahovať rovnaký počet položiek.

Na stĺpce tabuľky programu Excel sa zvyčajne odkazuje písmenami: stĺpec A, stĺpec B atď. Na stĺpec dátového rámca s jeho názvom môžete odkazovať pomocou syntaxe dataFrameName $ columnName. Takže, ak píšete snowdata $ spolu a stlačte kláves Enter, uvidíte všetky hodnoty v Celkom stĺpci, ako je to znázornené na obrázku nižšie. (Preto keď spustíte str (snowdata) príkaz, pred názvom každého stĺpca je znak dolára.)

Taylor & Francis Group

Pripomienka, že čísla v zátvorkách na ľavej strane záznamu nie sú súčasťou údajov; iba vám hovoria, s akou pozíciou každý riadok údajov začína. [1] znamená, že riadok začína prvou položkou vo vektore, [10] desiata atď.

Dokončenie karty RStudio pracuje s názvami stĺpcov dátových rámcov, ako aj s názvami objektov a funkcií. Je to veľmi užitočné, aby ste sa ubezpečili, že nesprávne nevypíšete názov stĺpca a nerozbijete skript. Ak sa vám zobrazia dlhé názvy stĺpcov, ušetrí sa to aj písanie.

Typ snowdata $ a počkajte, potom sa zobrazí zoznam všetkých názvov stĺpcov v snowdata.

Je ľahké pridať stĺpec do údajového rámca. V súčasnosti je Celkom stĺpec zobrazuje zimné sneženie v palcoch. Ak chcete pridať stĺpec zobrazujúci celkové hodnoty v metroch, môžete použiť tento formát:

snowdata $ Metre <- snowdata $ Celkom * 0,0254

Názov nového stĺpca je vľavo a vpravo je vzorec. V Exceli ste možno použili = A2 * 0,0254 a potom skopírovať vzorec dolu v stĺpci. Vďaka skriptu sa nemusíte obávať, či ste vzorec správne použili na všetky hodnoty v stĺpci.

Teraz sa pozri na svoje snehové údaje objekt na karte Prostredie. Mal by mať tretiu premennú, Merače.

Pretože snehové údaje je dátový rámec, má určité vlastnosti dátového rámca, ku ktorým máte prístup z príkazového riadku. nrow (snowdata) vám dáva čísla riadkov a ncol (snowdata) počet stĺpcov. Áno, môžete to zobraziť v prostredí RStudio, aby ste zistili, koľko pozorovaní a premenných existuje, ale pravdepodobne niekedy dôjde k tomu, že to budete chcieť vedieť ako súčasť skriptu. colnames (snowdata) alebo mená (snowdata) vám dá meno snehové údaje stĺpce. názvy riadkov (snowdata) dá vám akékoľvek názvy riadkov (ak žiadne neboli nastavené, budú predvolené znakové reťazce čísla riadkov ako napr "1", "2", "3", atď.).

Niektoré z týchto špeciálnych funkcií dátového rámca, známe tiež ako metódy, vám nielen poskytne informácie, ale umožní vám zmeniť vlastnosti dátového rámca. Takže mená (snowdata) vám povie názvy stĺpcov v dátovom rámci, ale

mená (snowdata) <- c ("Zima", "SnowInches", "SnowMeters")

zmeny názvy stĺpcov v dátovom rámci.

Pravdepodobne nebudete musieť poznať všetky dostupné metódy pre objekt dátového rámca, ale ak vás zaujíma, metódy (trieda = trieda (snowdata)) zobrazí ich. Ak sa chcete dozvedieť viac informácií o ktorejkoľvek metóde, spustite obvyklý pomocný dotaz s otáznikom, ako napr ?zlúčiť alebo ? podmnožina.

Keď číslo nie je v skutočnosti číslo

Poštové smerovacie čísla sú dobrým príkladom „čísel“, ktoré by sa za také nemali považovať. Aj keď je to technicky číselné, nemá zmysel robiť napríklad spoločné pridanie dvoch PSČ alebo získanie priemeru PSČ v komunite. Ak importujete stĺpec s PSČ, program R ho pravdepodobne zmení na stĺpec s číslami. A ak máte čo do činenia s oblasťami v Novom Anglicku, kde PSČ začínajú nulou, 0 zmizne.

Mám súbor tabuliek PSČ v Bostone podľa susedstva, stiahnutý z vládnej agentúry v Massachusetts na adrese //raw.githubusercontent.com/smach/R4JournalismBook/master/data/bostonzips.txt. Keby som to skúsil importovať s zips <- rio :: import ("bostonzips.txt"), PSČ by prichádzali ako 2118, 2119 atď., a nie ako 02118, 02119 atď.

To je miesto, kde to pomáha vedieť niečo o základnej funkcii, ktorá rio je import () funkcia používa. Tieto základné funkcie nájdete prečítaním súboru dovoz súbor pomoci na ? import. Na vtiahnutie súborov oddelených záložkami dovoz používa buď fread () z balíka data.table alebo základných R. read.table () funkcia. The ? prečítaná.tabuľka pomocník hovorí, že triedy stĺpcov môžete určiť pomocou colClasses argument.

Vytvorte podadresár údajov vo vašom aktuálnom adresári projektu a potom stiahnite súbor bostonzips.txt pomocou

download.file ("// raw.githubusercontent.com/smach/R4JournalismBook/master/data/bostonzips.txt", "data / bostonzips.txt")

Ak importujete tento súbor so špecifikáciou oboch stĺpcov ako reťazcov znakov, PSČ budú mať správne formátovanie:

zips <- rio :: import ("data / bostonzips.txt", colClasses = c ("znak" "," znak ")) str (zipsy)

Upozorňujeme, že triedy stĺpcov sa musia nastavovať pomocou c () funkcia, c ("znak", "znak"). Keby si sa snažil colClasses, "znak", zobrazí sa chybová správa. Toto je typická chyba pre R začiatočníkov, ale nemala by trvať dlho, kým sa do nej dostanete c () zvyk.

Tip na šetrenie pri písaní: Písanie c („znak“, „znak“) nie je všetko také náročné; ale ak máte tabuľku so 16 stĺpcami, v ktorých prvých 14 musí byť reťazec znakov, môže to byť nepríjemné. R. rep () funkcia môže pomôcť. rep (), ako ste si mohli domyslieť, opakuje čokoľvek, čo mu dáte, bez ohľadu na to, koľkokrát to poviete, pomocou formátu rep (myitem, numtimes). zástupca („znak“, 2) je to isté ako c ("znak", "znak"), tak colClasses = rep ("znak", 2) je ekvivalentné k colClasses = c ("znak", "znak") . A colClasses = c (rep ("znak", 14), rep ("numerický", 2)) nastaví prvých 14 stĺpcov ako reťazce znakov a posledné dva ako čísla. Všetky názvy tried stĺpcov tu musia byť v úvodzovkách, pretože názvy sú znakovými reťazcami.

Navrhujem, aby ste sa trochu pohrali rep () takže si zvyknete na formát, pretože ide o syntax, ktorú používajú aj iné funkcie R.

Jednoduché ukážkové údaje

R prichádza s niektorými vstavanými množinami údajov, ktoré sa ľahko používajú, ak sa chcete pohrať s novými funkciami alebo inými programovacími technikami. Veľa ich používajú aj ľudia učiaci R, pretože inštruktori si môžu byť istí, že všetci študenti začínajú s rovnakými údajmi v úplne rovnakom formáte.

Typ údaje () vidieť dostupné vstavané dátové sady v base R a akékoľvek nainštalované balíčky sú momentálne načítané. údaje (balík = .balíky (všetko. dostupné = PRAVDA)) from base R zobrazuje všetky možné množiny údajov z balíkov, ktoré sú nainštalované vo vašom systéme, bez ohľadu na to, či sú alebo nie sú načítané do pamäte vo vašej aktuálnej pracovnej relácii.

Viac informácií o množine údajov môžete získať rovnakým spôsobom, ako získate pomoc s funkciami: ? nazov datovej sady alebo pomoc ("nazov datovej sady"). mtcars a iris patria k tým, ktoré som videl veľmi často používané.

Ak píšete mtcars, sa v konzole vytlačí celá množina údajov mtcars. Môžete použiť hlava () funkcia pozrieť sa na prvých pár riadkov pomocou hlava (mtcars).

Túto množinu údajov môžete uložiť, ak chcete, do inej premennej s formátom ako cardata <- mtcars.

Alebo spustenie dátovej funkcie s názvom množiny údajov, ako je napr údaje (mtcars), načíta dátovú sadu do vášho pracovného prostredia.

Jedným z najzaujímavejších balíkov so súbormi vzorových údajov pre novinárov je balíček fivethirtyeight, ktorý obsahuje údaje z príbehov zverejnených na webovej stránke FiveThirtyEight.com. Balíček vytvorili viacerí akademici po konzultácii s redaktormi FiveThirtyEight; je navrhnutý tak, aby bol zdrojom pre výučbu vysokoškolskej štatistiky.

Predbalené údaje môžu byť užitočné - a v niektorých prípadoch zábavné. V skutočnom svete však nemusíte používať dáta, ktoré sú tak pohodlne zabalené.

Dátový rámec vytvorte manuálne v R.

Je pravdepodobné, že budete často narábať s údajmi, ktoré sa začínajú mimo R a importujete z tabuľky, súboru CSV, API alebo iného zdroja. Niekedy však možno budete chcieť iba priamo zadať malé množstvo údajov do R alebo inak vytvoriť dátový rámec ručne. Poďme sa teda rýchlo pozrieť na to, ako to funguje.

R dátové rámce sú štandardne zostavené po stĺpcoch, nie po jednom riadok v tom čase. Ak by ste chceli zhromaždiť rýchly dátový rámec výsledkov volieb do miest, mohli by ste vytvoriť vektor mien kandidátov, druhý vektor s príslušnosťou k strane a potom vektor ich súčtov hlasov:

kandidáti <- c ("Smith", "Jones", "zápisy", "prázdne miesta")

strana <- c ("demokrat", "republikán", "", "")

hlasy <- c (15248, 16723, 230, 5234)

Pamätajte, že vo svojich číslach nepoužívajte čiarky, ako to môžete robiť v programe Excel.

Ak chcete z týchto stĺpcov vytvoriť dátový rámec, použite data.frame () funkcie a synatx data.frame (stĺpec1, stĺpec2, stĺpec3).

myresults <- data.frame (kandidáti, strana, hlasy)

Skontrolujte jeho štruktúru pomocou str ():

str (výsledky)

Zatiaľ čo kandidáti a strana vektory sú postavy, kandidáti a strana stĺpce dátového rámca sa zmenili na triedu R objektov zvaných faktory. V tomto momente je to príliš burina na to, aby sme sa ponorili do toho, ako sa faktory líšia od postáv, až na to, že

  1. Faktory môžu byť užitočné, ak si chcete objednať určité položky v abecednom poradí pre grafické účely a iné účely, ako napr. Chudobný je menej než Fér je menej než Dobre je menej než Vynikajúci.
  2. Faktory sa môžu občas správať inak, ako by ste možno čakali. Odporúčam držať sa znakových reťazcov, pokiaľ nemáte dobrý dôvod na konkrétne hľadanie faktorov.

Pri vytváraní údajových rámcov môžete svoje reťazce znakov zachovať nedotknuté pridaním argumentu stringsAsFactors = FALSE:

myresults <- data.frame (kandidáti, strana, hlasy, stringsAsFactors = FALSE) str (myresults)

Teraz sú hodnoty také, aké ste očakávali.

Pri vytváraní dátových rámcov týmto spôsobom vás musím upozorniť ešte na jednu vec: Ak je jeden stĺpec kratší ako ostatné stĺpce, R bude niekedy opakovať údaje z kratšieho stĺpca—či chcete alebo nie.

Povedzme, že ste napríklad vytvorili stĺpce s výsledkami volieb pre kandidátov a stranu, ale zadali ste iba výsledky hlasov pre Smitha a Jonesa, nie pre zápisy a prázdne miesta. Môžete očakávať, že údajový rámec zobrazí ďalšie dve položky ako prázdne, ale mýlil by si sa. Vyskúšajte to a uvidíte, že vytvorením nového vektora hlasov s iba dvoma číslami použijete tento nový hlasovací vektor na vytvorenie iného údajového rámca:

hlasy <- c (15248, 16723)

myresults2 <- data.frame (kandidáti, strana, hlasy)

str (myresults2)

Máte pravdu, R znova použil prvé dve čísla, čo určite je nie čo by si chcel. Ak by ste to skúsili s tromi číslami vo vektore hlasov namiesto dvoch alebo štyroch, R by vyhodilo chybu. Je to tak preto, lebo každú položku nebolo možné recyklovať toľkokrát.

Ak si teraz myslíte: „Prečo nemôžem vytvárať dátové rámce, ktoré nemenia reťazce na faktory automaticky? A prečo sa musím obávať, že dátové rámce znova použijú údaje jedného stĺpca, ak zabudnem vyplniť všetky údaje? “ Rovnakú myšlienku mal aj Hadley Wickham. Jeho balíček tibble vytvára triedu R, ktorá sa tiež nazýva tibble, čo podľa neho predstavuje „moderný prístup k dátovým rámcom. Ponechávajú si funkcie, ktoré obstáli v skúške času, a upúšťajú od funkcií, ktoré boli predtým pohodlné, ale teraz sú frustrujúce. “

Ak vás to láka, nainštalujte si balíček tibble, ak nie je vo vašom systéme, a potom skúste vytvoriť tibble pomocou

myresults3 <- tibble :: tibble (kandidáti, strana, hlasy)

a zobrazí sa chybové hlásenie, že stĺpec hlasov musí obsahovať buď štyri štyri položky, alebo jednu položku (tibble () opakuje jednu položku toľkokrát, koľkokrát je potrebné, ale iba pre jednu položku).

Ak chcete vytvoriť tabuľku s týmito údajmi, vráťte stĺpec hlasov späť na štyri položky:

knižnica (tibble)

hlasy <- c (15248, 16723, 230, 5234)

myresults3 <- tibble (kandidáti, strana, hlasy)

str (myresults3)

Vyzerá to podobne ako dátový rámec - v skutočnosti to je ono je dátový rámec, ale s niektorými špeciálnymi správaniami, napríklad s tým, ako sa tlačí. Všimnite si tiež, že stĺpec kandidátov je reťazec znakov, nie faktory.

Ak sa vám toto správanie páči, choďte do toho a použite tibble. Avšak vzhľadom na to, ako bežné konvenčné dátové rámce zostávajú v R, je stále dôležité vedieť o ich predvolenom správaní.

Export údajov

Často potom, čo ste spojili svoje dáta v R, chcete uložiť svoje výsledky. Tu uvádzam niekoľko spôsobov, ako exportovať vaše údaje, ktoré používam najčastejšie:

Uložiť do súboru CSV s rio :: export (myObjectName, file = "myFileName.csv") a do súboru Excel s rio :: export (myObjectName, file = "myFileName.xlsx"). rio chápe, aký formát súboru chcete, na základe prípony názvu súboru. Existuje niekoľko ďalších dostupných formátov vrátane .tsv pre údaje oddelené záložkami, .json pre JSON a .xml pre XML.

Uložiť do binárneho objektu R. čo uľahčuje načítanie späť do R v budúcich reláciách. Existujú dve možnosti.

Generické uložiť () uloží jeden alebo viac objektov do súboru, ako napr uložiť (objectName1, objectName2, file = "myfilename.RData"). Ak chcete tieto údaje načítať späť do R, stačí použiť príkaz načítať ("myfilename.RData") a všetky objekty sa vrátia s rovnakými názvami v rovnakom stave, v akom boli predtým.

Môžete tiež uložiť jeden objekt do súboru pomocou saveRDS (myobject, file = "filename.rds"). Logickým predpokladom je, že loadRDS by načítal súbor späť, ale príkaz je readRDS—A v tomto prípade boli uložené iba údaje, nie názov objektu. Musíte teda načítať údaje do nového názvu objektu, napríklad mydata <- readRDS ("názov súboru.rds").

Existuje tretí spôsob uloženia R objektu špeciálne pre R: generovanie R príkazov, ktoré by namiesto konečných výsledkov znovu vytvorili objekt. Základné funkcie R na generovanie súboru R na opätovné vytvorenie objektu sú dput () alebo výpis (). Avšak nachádzam rio :: export (myobject, "mysavedfile.R") ešte ľahšie zapamätateľné.

Na záver existujú ďalšie spôsoby ukladania súborov, ktoré optimalizujú čitateľnosť, rýchlosť alebo kompresiu a ktoré uvádzam v časti venovanej ďalším zdrojom na konci tohto článku.

Objekt R môžete tiež exportovať do schránky systému Windows alebo Mac pomocou programu rio: rio :: export (myObjectName, formát). Rovnakým spôsobom môžete importovať údaje do schránky R zo schránky: rio :: import (súbor).

Bonus: rio’s konvertovať () funkcia vám umožňuje - uhádli ste - prevádzať jeden typ súboru na druhý bez toho, aby ste museli údaje ručne sťahovať do a potom z R. Pozrite si ? konvertovať pre viac info.

Záverečná poznámka: Program RStudio umožňuje kliknutím importovať súbor bez toho, aby ste museli vôbec písať kód. Toto nie je nič, čo odporúčam, kým nebudete pohodlne importovať z príkazového riadku, pretože si myslím, že je dôležité porozumieť kódu, ktorý je za importom. Ale pripúšťam, že to môže byť užitočná skratka.

Na karte Súbory v pravom dolnom paneli programu RStudio prejdite na súbor, ktorý chcete importovať, a kliknite naň. Zobrazí sa možnosť Zobraziť súbor alebo Importovať množinu údajov. Vyberte možnosť Importovať množinu údajov, aby sa zobrazilo dialógové okno s náhľadmi údajov, ktoré vám umožní upraviť spôsob importu údajov a zobraziť ukážku kódu, ktorý sa vygeneruje.

Vykonajte ľubovoľné zmeny, ktoré chcete, a kliknite na Importovať. Vaše údaje sa stiahnu do R.

Dodatočné zdroje

rio alternatívy. Aj keď je rio vynikajúcim švajčiarskym nožom na manipuláciu so súbormi, môžu nastať chvíle, keď budete chcieť mať trochu väčšiu kontrolu nad tým, ako sú vaše dáta vtiahnuté alebo ukladané z R. Okrem toho boli obdobia, keď som mal dátový súbor, ktorý rio udusilo, ale zvládol to iný balík. Niektoré ďalšie funkcie a balíčky, ktoré možno budete chcieť preskúmať:

  • Základne R. read.csv () a read.table () importovať textové súbory (použite ? read.csv a ? prečítaná.tabuľka získať viac informácií). stringsAsFactors = FALSE je potrebné, ak si chcete ponechať svoje reťazce znakov ako reťazce znakov. write.csv () ukladá do CSV.
  • rio používa na čítanie súborov programu Excel balík readxl od Hadleyho Wickhama. Ďalšou alternatívou pre Excel je openxlsx, ktorý dokáže zapisovať do súboru Excel aj čítať. Informácie o formátovaní tabuliek pri exporte nájdete na vinetách balíka openxlsx.
  • Balíček Wickhamových readrov stojí za pozornosť aj ako súčasť „upratovania“. readr obsahuje funkcie na čítanie súborov CSV, tabulátora, pevnej šírky, webových denníkov a niekoľkých ďalších typov súborov. readr vytlačí typ dát, ktorý určil pre každý stĺpec - celé číslo, znak, dvojitá číslica (nie celé čísla) atď. Vytvára tabuľky.

Importujte priamo z tabuľky Google. Balíček googlesheets vám umožňuje autentifikovať účet Google a importovať údaje z tabuľky Tabuliek Google, aj keď je to súkromné. Balíček je k dispozícii na serveri CRAN; nainštalujte ho cezinstall.packages ("googlesheets"). Po načítaní pomocou knižnica ("googlesheets"), prečítajte si vynikajúcu úvodnú vignetu. V čase písania tohto článku bola úvodná vigneta k dispozícii v jazyku R na adrese vignette ("basic-usage", package = "googlesheets"). Ak to nevidíte, skúste pomoc (balíček = "googlesheets") a kliknutím na odkaz Používateľské príručky, Vignety na obaly a iná dokumentácia zobrazíte dostupné vinety, alebo si pozrite informácie o balíku na GitHub na adrese //github.com/jennybc/googlesheets.

Zoškriabať údaje z webových stránok s balíkom rvest a rozšírením prehliadača SelectorGadget alebo záložkou JavaScriptu. SelectorGadget vám pomôže odhaliť prvky CSS údajov, ktoré chcete kopírovať a ktoré sa nachádzajú na stránke HTML; potom rvest použije R na vyhľadanie a uloženie týchto údajov. Toto nie je technika pre surových začiatočníkov, ale akonáhle získate trochu skúseností s R, možno sa budete chcieť vrátiť a znova sa k tomu vrátiť. Na //bit.ly/Rscraping mám nejaké pokyny a video, ako to urobiť. RStudio má na požiadanie k dispozícii aj webinár.

Alternatívy k základným funkciám R na ukladanie a čítanie. Ak pracujete s veľkými súbormi údajov, môže byť pre vás pri ukladaní a načítaní súborov dôležitá rýchlosť. Balík data.table je rýchly fread () funkciou, ale pozor, výslednými objektmi sú dátové tabuľky a nie obyčajné dátové rámce; niektoré spôsoby správania sa líšia. Ak chcete konvenčný dátový rámec, môžete si ho zaobstarať s as.data.frame (mydatatable) syntax. Balík data.table fwrite () Táto funkcia je zameraná na zápis do súboru CSV podstatne rýchlejšie ako základné R. write.csv ().

Pre ukladanie a načítanie údajov by mohli byť zaujímavé dva ďalšie balíčky. Balík pierok sa uloží v binárnom formáte, ktorý je možné načítať do formátu R alebo Python. A prvý balíček read.fst () a write.fst () ponúkajú rýchle ukladanie a načítanie objektov R dátových rámcov - plus možnosť kompresie súborov.

$config[zx-auto] not found$config[zx-overlay] not found