Programmēšana

R apmācība: Kā importēt datus R

Iegūstiet visu grāmatu
Praktiskais R masu komunikācijai un žurnālistikai MSRP $ 59,95 Skatiet to

Šis raksts tika izdots no “Praktiskā R masu saziņai un žurnālistikai” ar izdevēja atļauju. © 2019 by Taylor & Francis Group, LLC.

Pirms jūs varat analizēt un vizualizēt datus, jums tie jāievada R. Ir dažādi veidi, kā to izdarīt, atkarībā no tā, kā jūsu dati ir formatēti un kur tie atrodas.

Parasti funkcija, kuru izmantojat datu importēšanai, ir atkarīga no datu faila formāta. Piemēram, R bāzē varat importēt CSV failu ar lasīt.csv (). Hadlijs Vikhems izveidoja paketi ar nosaukumu readxl, kurai, kā jūs varētu sagaidīt, ir funkcija lasīt Excel failos. Datu iegūšanai no Google izklājlapām ir vēl viena pakete - googlesheets.

Bet, ja jūs nevēlaties to visu atcerēties, ir rio.

Rio burvība

"Rio mērķis ir padarīt datu faila I / O [importēšanu / izvadi] R pēc iespējas vieglāku, ieviešot trīs vienkāršas funkcijas Šveices armijas nažu stilā," teikts projekta GitHub lapā. Šīs funkcijas ir imports (), eksports (), un konvertēt ().

Tātad, Rio pakotnei ir tikai viena funkcija, ko lasīt daudzos dažādu veidu failos: imports (). Ja jūs importēt ("myfile.csv"), tā zina izmantot funkciju CSV faila lasīšanai. importēt ("myspreadsheet.xlsx") darbojas tāpat. Faktiski rio apstrādā vairāk nekā divus desmitus formātu, ieskaitot ar tabulēšanu atdalītus datus (ar paplašinājumu .tsv), JSON, Stata un fiksēta platuma formāta datus (.fwf).

Šai apmācībai nepieciešamie paketes

  • Rio
  • htmltab
  • lasītxl
  • googlesheets
  • pacmans
  • sētnieks
  • rmiscutils (pm GitHub) vai readr
  • tibble

Pēc datu analīzes, ja vēlaties saglabāt rezultātus kā CSV, Excel izklājlapu vai citus formātus, Rio eksports () funkcija to var apstrādāt.

Ja jūsu sistēmā vēl nav rio pakotnes, instalējiet to tūlīt ar install.packages ("Rio").

Esmu izveidojis dažus datu paraugus ar Bostonas ziemas sniegputeņa datiem. Jūs varētu doties uz //bit.ly/BostonSnowfallCSV un ar peles labo pogu noklikšķiniet, lai saglabātu failu kā BostonWinterSnowfalls.csv pašreizējā R projekta darba direktorijā. Bet viens no skriptu punktiem ir manuāla darba - nogurdinoša vai cita - aizstāšana ar automatizāciju, kuru ir viegli reproducēt. Tā vietā, lai noklikšķinātu, lai lejupielādētu, varat izmantot R download.file funkcija ar sintaksi download.file ("url", "destinationFileName.csv"):

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

Tas pieņem, ka jūsu sistēma novirzīs no šī Bit.ly URL saīsnes un veiksmīgi atradīs reālā faila URL //raw.githubusercontent.com/smach/NICAR15data/master/BostonWinterSnowfalls.csv. Man dažkārt ir bijušas problēmas piekļūt tīmekļa saturam vecajos Windows datoros. Ja jums ir kāds no šiem un šī Bit.ly saite nedarbojas, varat nomainīt saites Bit.ly faktisko URL. Vēl viena iespēja ir jaunināt savu Windows datoru uz Windows 10, ja iespējams, lai redzētu, vai tas ir triks.

Ja vēlaties, lai rio varētu vienkārši importēt datus tieši no URL, patiesībā tas var, un es to pievērsīšos nākamajā sadaļā. Punkts šo sadaļa ir iegūt praksi strādāt ar vietējo failu.

Kad vietējā sistēmā esat ievietojis testa failu, varat ielādēt šos datus R objektā ar nosaukumu snowdata ar kodu:

sniega dati <- rio :: import ("BostonWinterSnowfalls.csv")

Ņemiet vērā, ka iespējams, ka Rio lūgs atkārtoti ielādēt failu binārā formātā, tādā gadījumā jums būs jāpalaiž

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

Noteikti izmantojiet RStudio cilnes pabeigšanas opcijas. Ja rakstāt rio :: un pagaidiet, jūs saņemsit visu pieejamo funkciju sarakstu. Tips sniegs un pagaidiet, un kā opcija jums vajadzētu redzēt sava objekta pilnu nosaukumu. Izmantojiet augšupvērsto un lejupvērsto bultiņu taustiņus, lai pārvietotos starp automātiskās pabeigšanas ieteikumiem. Kad vajadzīgā opcija ir iezīmēta, nospiediet taustiņu Tab (vai Enter), lai skriptam tiktu pievienots pilns objekta vai funkcijas nosaukums.

Jums vajadzētu redzēt objektu sniega dati parādās vidē RStudio augšējā labajā rūtī. (Ja augšējā labajā rūtī jūsu komandas vietā tiek parādīta komandu vēsture, atlasiet cilni Vide.)

Teilora un Franciska grupa

sniega dati vajadzētu parādīt, ka tajā ir 76 “obs.” - novērojumi vai rindas - un divi mainīgie vai kolonnas. Noklikšķinot uz bultiņas pa kreisi no sniega dati lai paplašinātu ierakstu, redzēsiet divus kolonnu nosaukumus un katras slejas datu veidu. The Ziema ir rakstzīmju virknes un Kopā kolonna ir skaitliska. Jums arī jāspēj redzēt katras kolonnas pirmās pirmās vērtības Vides rūtī.

Teilora un Franciska grupa

Noklikšķiniet uz vārda sniega dati cilnē Vide, lai iegūtu vairāk izklājlapai līdzīgu datu skatu. To pašu skatu var iegūt no R konsoles, izmantojot komandu Skats (sniega dati) (tam jābūt lielam V skata skatam -skats nedarbosies). Piezīme: sniega dati nav pēdiņās, jo jūs atsaucaties uz R objekts jūsu vidē. Iekš rio :: imports komandu pirms BostonWinterSnowfalls.csv ir pēdiņās, jo tas nav R objekts; tas ir faila, kas atrodas ārpus R, rakstzīmju virknes nosaukums.

Teilora un Franciska grupa

Šim skatam ir pāris izklājlapām līdzīgas darbības. Noklikšķiniet uz kolonnas galvenes, lai tā tiktu kārtota pēc kolonnas vērtībām augošā secībā; noklikšķiniet uz tās pašas slejas galvenes otrreiz, lai kārtotu dilstošā secībā. Lai atrastu rindas, kas atbilst noteiktām rakstzīmēm, ir meklēšanas lodziņš.

Noklikšķinot uz ikonas Filtrs, tiek parādīts katras kolonnas filtrs. The Ziema rakstzīmju kolonna darbojas, kā jūs varētu gaidīt, filtrējot visas rindas, kurās ir rakstzīmes, kurās ievadāt. Ja noklikšķināt uz Kopā ciparu kolonnas filtrs tomēr vecākajās RStudio versijās parāda slīdni, savukārt jaunākajās - histogramma un filtrēšanas lodziņš.

Importējiet failu no tīmekļa

Ja vēlaties lejupielādēt un importēt failu no tīmekļa, varat to izdarīt, ja tas ir publiski pieejams un tādā formātā kā Excel vai CSV. Izmēģiniet

sniega dati <- rio :: import ("// bit.ly/BostonSnowfallCSV", formāts)

Daudzas sistēmas var novirzīt URL uz failu pat pēc tam, kad vispirms esat saņēmis kļūdas ziņojumu, ja vien jūs norādāt formātu kā "csv" jo faila nosaukums šeit neietver .csv. Ja jūsu nedarbosies, tā vietā izmantojiet vietrādi URL //raw.githubusercontent.com/smach/R4JournalismBook/master/data/BostonSnowfall.csv.

rio var arī importēt labi formatētas HTML tabulas no tīmekļa lapām, taču tabulām jābūt ārkārtīgi labi formatēts. Pieņemsim, ka vēlaties lejupielādēt tabulu, kurā aprakstīti Nacionālā laikapstākļu dienesta sniegotības smaguma pakāpes rādītāji. Nacionālo vides informācijas centru reģionālā sniegputeņa rādītāja lapā ir tikai viena tabula, kas ir ļoti labi izstrādāta, tāpēc šādam kodam vajadzētu darboties:

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

Vēlreiz ņemiet vērā, ka šajā gadījumā jums jāiekļauj formāts format = "html" . jo URL pats par sevi nedod norādes par to, kāda veida fails tas ir. Ja URL bija faila nosaukums ar .html pagarinājums, Rio zinātu.

Tomēr reālajā dzīvē tīmekļa dati reti parādās tik kārtīgā, izolētā formā. Laba iespēja gadījumiem, kas nav tik labi izstrādāti, bieži ir pakete htmltab. Instalējiet to ar install.packages ("htmltab"). Pakotnes funkciju HTML tabulas lasīšanai sauc arī par htmltab. Bet, ja jūs to izpildāt:

bibliotēka (htmltab) pilsētas tabula <- htmltab ("// lv.wikipedia.org/wiki/List_of_United_States_cities_by_population") str (pilsētas tabula)

redzat, ka jums nav pareizās tabulas, jo datu rāmī ir viens objekts. Tāpēc, ka es nenorādīju kas tabula, tā izvilka pirmo HTML tabulu lapā. Tas nejauši nebija tas, ko es vēlos. Es nejūtos kā importēt katru lapas tabulu, kamēr neatrodu pareizo, bet par laimi man ir Chrome paplašinājums ar nosaukumu Table Capture, kas ļauj man apskatīt lapas tabulu sarakstu.

Pēdējo reizi, kad es pārbaudīju, 5. tabula ar vairāk nekā 300 rindām bija tā, kuru es vēlējos. Ja tas jums tagad nedarbojas, mēģiniet instalēt Table Capture pārlūkā Chrome, lai pārbaudītu, kuru tabulu vēlaties lejupielādēt.

Mēģināšu vēlreiz, norādot 5. tabulu un pēc tam redzot, kādi kolonnu nosaukumi ir jaunajā pilsētas tabulā. Ņemiet vērā, ka šajā kodā es ievietoju pilsētas galds <- htmltab () komandu uz vairākām līnijām. Tas ir tāpēc, ka tas nepārsniedza robežas - jūs varat visu turēt vienā rindā. Ja tabulas numurs ir mainījies kopš šī raksta publicēšanas, nomainiet to kas = 5 ar pareizo numuru.

Tā vietā, lai izmantotu Wikipedia lapu, varat aizstāt Wikipedia URL ar manis izveidotā faila kopijas URL. Šis fails atrodas vietnē //bit.ly/WikiCityList. Lai izmantotu šo versiju, ierakstiet bit.ly/WikiCityList pārlūkprogrammā, pēc tam nokopējiet garo URL, uz kuru tas novirza, un izmantojiet to to zemāk esošajā kodā Wikipedia URL vietā:

bibliotēka (htmltab) pilsētas tabula <- htmltab ("// lv.wikipedia.org/wiki/List_of_United_States_cities_by_population", kas = 5) kolnami (citytable)

Kā es zināju kas bija arguments, kas man vajadzīgs, lai norādītu tabulas numuru? Es izlasīju htmltab palīdzības failu, izmantojot komandu ? htmltab. Tajā bija iekļauti visi pieejamie argumenti. Es izpētīju iespējas unkas viena garuma vektors dokumenta tabulas identificēšanai ”izskatījās labi.

Ņemiet vērā arī to, ka es to izmantoju kolnevi (citytable) tā vietā nosaukumi (pilsētas tabula) lai redzētu kolonnu nosaukumus. Vai nu derēs. Bāzei R ir arīvietvārdi () funkciju.

Jebkurā gadījumā šie tabulas rezultāti ir daudz labāki, lai gan jūs varat redzēt no skriešanas str (pilsētas galds) ka pāris kolonnas, kurām jābūt skaitļiem, ienāca kā rakstzīmju virknes. To var redzēt gan pēc chr blakus kolonnas nosaukumam un pēdiņām ap vērtībām, piemēram, 8,550,405.

Tas ir viens no mazajiem R traucējumiem: R to parasti nesaprot 8,550 ir skaitlis. Es pats tiku galā ar šo problēmu, pats ierakstot savu funkciju savā rmiscutils paketē, lai visas tās “rakstzīmju virknes”, kas patiešām ir skaitļi ar komatiem, pārvērstu skaitļos. Ikviens var lejupielādēt pakotni no GitHub un izmantot to.

Vispopulārākais veids, kā instalēt paketes no GitHub, ir izmantot paketi ar nosaukumu devtools. devtools ir ārkārtīgi jaudīga pakete, kas paredzēta galvenokārt cilvēkiem, kuri vēlas rakstīt savus pašu paketes, un tas ietver dažus veidus, kā instalēt paketes no citām vietām, izņemot CRAN. Tomēr devtools instalēšanai parasti ir nepieciešamas pāris papildu darbības, salīdzinot ar tipisku pakotni, un es vēlos atstāt kaitinošus sistēmas administratora uzdevumus, līdz tas ir absolūti nepieciešams.

Tomēr pacman pakotne instalē paketes arī no avotiem, kas nav CRAN, piemēram, GitHub. Ja vēl neesat to izdarījis, instalējiet Pacman ar install.packages ("pacman").

pacman's p_install_gh ("lietotājvārds / packagerepo") funkcija tiek instalēta no GitHub repo.

p_load_gh ("lietotājvārds / packagerepo")slodzes pakotne atmiņā, ja tā jau pastāv jūsu sistēmā, un tā vispirms tiek instalēta un pēc tam tiek ielādēta pakete no GitHub, ja pakete lokāli nepastāv.

Mana rmisc komunālo pakalpojumu pakete ir atrodama vietnē smach / rmiscutils. Palaist pacman :: p_load_gh ("smach / rmiscutils") lai instalētu manu paketi rmiscutils.

Piezīme. Alternatīvu pakotni pakotņu instalēšanai no GitHub sauc par pultīm, kuras varat instalēt, izmantojotinstall.packages ("tālvadības pultis"). Tās galvenais mērķis ir instalēt paketes no attālām krātuvēm, piemēram, GitHub. Jūs varat apskatīt palīdzības failu ar palīdzība (pakete = "tālvadības pultis").

Iespējams, ka visslīdākais ir pakete ar nosaukumu githubinstall. Tās mērķis ir uzminēt repo, kur atrodas pakete. Instalējiet to, izmantojotinstall.packages ("githubinstall"); tad jūs varat instalēt manu paketi rmiscutils, izmantojotgithubinstall :: gh_install_packages ("rmiscutils"). Jums tiek jautāts, vai vēlaties instalēt pakotni vietnē smach / rmisutils (jūs darāt).

Tagad, kad esat instalējis manu funkciju kolekciju, varat izmantot manu number_with_commas () funkciju, lai mainītu tās rakstzīmju virknes, kurām skaitļiem vajadzētu būt atpakaļ. Es ļoti iesaku datu rāmim pievienot jaunu kolonnu, nevis modificēt esošu kolonnu - tā ir laba datu analīzes prakse neatkarīgi no platformas, kuru izmantojat.

Šajā piemērā es sauktu jauno kolonnu PopEst2017. (Ja tabula kopš tā laika ir atjaunināta, izmantojiet atbilstošus kolonnu nosaukumus.)

bibliotēka (rmiscutils) citytable $ PopEst2017 <- number_with_commas (citytable $ "2017. gada tāme")

Mans pakotne rmiscutils nav vienīgais veids, kā tikt galā ar importētajiem numuriem, starp kuriem ir komati. Pēc tam, kad esmu izveidojis savu paketi rmiscutils un tā number_with_commas () funkcija tidyverse readr piedzima. readr ietver arī funkciju, kas rakstzīmju virknes pārvērš skaitļos, parse_number ().

Pēc readr instalēšanas jūs varētu ģenerēt skaitļus no 2017. gada tāmes kolonnas ar readr:

citytable $ PopEst2017 <- readr :: parse_number (pilsētas tabulas $ 2017 aprēķins)

Viena no priekšrocībām readr :: parse_number () ir tas, ka jūs varat definēt savu lokalizācija () kontrolēt tādas lietas kā kodēšanu un decimālzīmes, kas var interesēt lasītājus, kas nav ASV. Palaist ? parse_number, lai iegūtu vairāk informācijas.

Piezīme. Ja 2017. gada tāmes kolonnā neizmantojāt cilnes aizpildīšanu, iespējams, radās problēma ar šīs slejas nosaukumu, ja koda palaišanas laikā tajā ir atstarpe. Ievērojiet, ka manā kodā iepriekš ir pēdējās pēdiņas (`) ap kolonnas nosaukumu. Tas ir tāpēc, ka esošajā nosaukumā bija atstarpe, kuras jums nav jābūt R. Šim slejas nosaukumam ir vēl viena problēma: tas sākas ar skaitli, arī parasti ar R nē. RStudio to zina un automātiski pievieno nepieciešamās aizmugurējās pēdiņas ap nosaukumu, izmantojot cilnes automātisko pabeigšanu.

Bonusa padoms: ir R pakete (protams, ka tā ir!), Ko sauc par sētnieku, kas var automātiski novērst nepatīkamus kolonnu nosaukumus, kas importēti no datu avota, kas nav R draudzīgs. Instalējiet to ar install.packages ("sētnieks"). Pēc tam, izmantojot sētnieku, varat izveidot jaunus tīru kolonnu nosaukumus tīri_nosaukumi () funkciju.

Tagad es izveidošu pilnīgi jaunu datu rāmi, nevis mainīšu kolonnu nosaukumus savā sākotnējā datu rāmī, un sākotnējiem datiem palaidīšu sētnieka tīrīšanas_nosaukumus (). Pēc tam pārbaudiet datu rāmja kolonnu nosaukumus ar vārdi ():

citytable_cleaned <- sētnieks :: clean_names (citytable)

nosaukumi (citytable_cleaned)

Jūs redzat, ka atstarpes ir mainītas uz pasvītrām, kuras ir likumīgas R mainīgo nosaukumos (tāpat kā punkti). Un visiem kolonnu nosaukumiem, kas agrāk sākās ar skaitli, tagad ir x sākumā.

Ja nevēlaties iztērēt atmiņu, izmantojot divas būtībā vienādu datu kopijas, varat noņemt R objektu no darba sesijas arrm () funkcija: rm (pilsētas galds).

Importēt datus no pakotnēm

Ir vairākas paketes, kas ļauj piekļūt datiem tieši no R. Viens ir quantmod, kas ļauj ievilkt dažus ASV valdības un finanšu datus tieši R.

Vēl viena ir pareizi nosaukta Weatherdata pakete CRAN. Tas var iegūt datus no Weather Underground API, kurā ir informācija par daudzām pasaules valstīm.

RONA pakete, rOpenSci grupas projekts, iekļauj vairākas dažādas ASV Nacionālās okeāna un atmosfēras pārvaldes datu kopas, tostarp ikdienas klimata, bojas un vētras informāciju.

Ja jūs interesē štatu vai vietējo pašvaldību dati ASV vai Kanādā, iespējams, vēlēsities apskatīt RSocrata, lai noskaidrotu, vai aģentūra, kuru jūs interesē, tur ievieto datus. Man vēl nav jāatrod pilns visu pieejamo Socrata datu kopu saraksts, taču vietnē //www.opendatanetwork.com ir meklēšanas lapa. Tomēr esiet piesardzīgs: ir kopienas augšupielādēti komplekti kopā ar oficiāliem valdības datiem, tāpēc pārbaudiet datu kopas īpašnieku un augšupielādes avotu, pirms paļauties uz to vairāk nekā R praksē. Rezultātā “ODN datu kopa” nozīmē, ka tas ir fails, ko kāds ir augšupielādējis plašākā sabiedrībā. Oficiālās valdības datu kopas parasti dzīvo tādos vietrāžos URL kā //data.CityOrStateName.gov un//data.CityOrStateName.us.

Lai iegūtu vairāk datu importēšanas pakotņu, skatiet manu meklējamo diagrammu vietnē //bit.ly/RDataPkgs. Ja jūs strādājat ar ASV valdības datiem, jūs varētu īpaši interesēt tautas skaitīšana un kārtība, kas abi izmanto ASV tautas skaitīšanas biroja datus. Citas noderīgas valdības datu paketes ietver eu.us.opendata no ASV un Eiropas Savienības valdībām, lai atvieglotu abu reģionu datu salīdzināšanu, un Kanādas tautas skaitīšanas datu skaitīšana.

Kad dati nav ideāli formatēti

Visos šajos datu paraugu gadījumos dati ir bijuši ne tikai labi formatēti, bet arī ideāli: Kad es tos atradu, tie bija ideāli strukturēti R. Ko es ar to domāju? Tas bija taisnstūrveida, un katrai šūnai bija viena vērtība, nevis apvienotās šūnas. Pirmajā rindā bija kolonnu galvenes, atšķirībā no, piemēram, virsraksta rindas ar lielu fontu vairākās šūnās, lai izskatās skaistas - vai kolonnu galvenes vispār nebija.

Darbs ar nesakoptiem datiem diemžēl var kļūt diezgan sarežģīts. Bet ir pāris kopīgi jautājumi, kurus ir viegli novērst.

Sākuma rindas, kas nav datu sastāvdaļa. Ja jūs zināt, ka dažās pirmajās Excel izklājlapas rindās nav vēlamo datu, varat ieteikt rio izlaist vienu vai vairākas rindas. Sintakse ir rio :: import ("mySpreadsheet.xlsx", izlaist = 3) lai izslēgtu pirmās trīs rindas. izlaist ņem veselu skaitli.

Izklājlapā nav sleju nosaukumu. Pēc noklusējuma tiek pieņemts, ka jūsu lapas pirmā rinda ir kolonnu nosaukumi. Ja jūsu dati nav Ja jums ir galvenes, jūsu datu pirmā rinda var kļūt par jūsu sleju galvenēm. Lai no tā izvairītos, izmantojiet rio :: import ("mySpreadsheet.xlsx", col_names = FALSE) tātad R ģenerēs noklusējuma galvenes X0, X1, X2 un tā tālāk. Vai arī izmantojiet tādu sintaksi kā rio :: import ("mySpreadsheet.xlsx", col_names = c ("Pilsēta", "Valsts", "Iedzīvotāji")) lai iestatītu savus kolonnu nosaukumus.

Ja izklājlapā ir vairākas cilnes, kas arguments ignorē nolasīšanas noklusējumu pirmajā darblapā. rio :: import ("mySpreadsheet.xlsx", kas = 2) skan otrajā darblapā.

Kāds ir datu ietvars? Un ko jūs varat darīt ar vienu?

rio importē izklājlapu vai CSV failu kā R datu rāmis. Kā uzzināt, vai jums ir datu rāmis? Gadījumā, ja sniega dati, klase (sniega dati) atgriež tā objekta klasi vai tipu. str (sniega dati) arī stāsta jums klasi un pievieno mazliet vairāk informācijas. Liela daļa informācijas, kuru redzat str () ir līdzīgs tam, ko redzējāt šajā piemērā vides rūtī RStudio: sniega dati ir 76 novērojumi (rindas) un divi mainīgie (kolonnas).

Datu rāmji ir nedaudz līdzīgi izklājlapām, jo ​​tiem ir kolonnas un rindas. Tomēr datu rāmji ir strukturētāki. Katra datu rāmja kolonna ir R vektors, kas to nozīmē katram kolonnas vienumam jābūt vienādam datu tipam. Viena kolonna var būt visi skaitļi, bet otra kolonna - visas virknes, taču kolonnā datiem jābūt konsekventiem.

Ja jums ir datu rāmja kolonna ar vērtībām 5, 7, 4 un “value to come”, R nebūs vienkārši nelaimīgs un nesniegs jums kļūdu. Tā vietā visas jūsu vērtības tiks piespiestas tam pašam datu tipam. Tā kā “vērtību nākt” nevar pārvērst par skaitli, 5, 7 un 4 galu galā tiks pārvērsti par rakstzīmju virknēm "5", "7", un "4". Parasti tas nav tas, ko vēlaties, tāpēc ir svarīgi zināt, kāda veida dati ir katrā kolonnā. Viena klaiņojošu rakstzīmju virknes vērtība 1000 skaitļu kolonnā var visu pārveidot par rakstzīmēm. Ja vēlaties numurus, pārliecinieties, vai tie jums ir!

R ir veidi, kā atsaukties uz trūkstošajiem datiem, kas nepieskrūvēs pārējās jūsu slejas: NA nozīmē “nav pieejams”.

Datu rāmji ir taisnstūrveida: katrai rindai ir jābūt vienādam ierakstu skaitam (lai gan daži var būt tukši), un katrā kolonnā jābūt vienādam vienumu skaitam.

Excel izklājlapas kolonnas parasti apzīmē ar burtiem: A kolonna, B kolonna utt. Jūs varat atsaukties uz datu rāmja kolonnu ar tās nosaukumu, izmantojot sintaksi dataFrameName $ columnName. Tātad, ja jūs rakstāt snowdata $ Kopā un nospiediet Enter, jūs redzat visas vērtības Kopā kolonnā, kā parādīts zemāk redzamajā attēlā. (Tāpēc, kad palaižat str (sniega dati) komandu, pirms katras kolonnas nosaukuma ir dolāra zīme.)

Teilora un Franciska grupa

Atgādinājums, ka iekavās esošie skaitļi saraksta kreisajā pusē nav datu daļa. viņi tikai jums saka, ar kādu pozīciju sākas katra datu līnija. [1] nozīmē, ka rinda sākas ar vektora pirmo vienumu, [10] desmitais utt.

RStudio cilnes pabeigšana darbojas ar datu rāmja kolonnu nosaukumiem, kā arī objektu un funkciju nosaukumiem. Tas ir diezgan noderīgi, lai pārliecinātos, ka nepareizi uzrakstījāt slejas nosaukumu un nesalauzāt skriptu, un tas arī ietaupa rakstīšanu, ja jums ir garie sleju nosaukumi.

Tips sniega dati $ un pagaidiet, tad jūs redzat visu sleju nosaukumu sarakstu sniega datos.

Kolonnu datu rāmim ir viegli pievienot. Pašlaik Kopā kolonnā redzams ziemas sniegputenis collās. Lai pievienotu kolonnu, kas parāda kopsummu metros, varat izmantot šo formātu:

sniega dati $ Metri <- sniega dati $ Kopā * 0.0254

Jaunās kolonnas nosaukums ir kreisajā pusē, un labajā pusē ir formula. Programmā Excel, iespējams, esat izmantojis = A2 * 0,0254 un pēc tam nokopēja formulu kolonnā. Izmantojot skriptu, jums nav jāuztraucas par to, vai formula ir pareizi lietota visām kolonnas vērtībām.

Tagad apskatiet savu sniega dati objektu cilnē Vide. Tam vajadzētu būt trešajam mainīgajam, Skaitītāji.

Tā kā sniega dati ir datu rāmis, tam ir noteiktas datu rāmja īpašības, kurām varat piekļūt no komandrindas. tagad (sniega dati) dod jums rindu un ncol (sniega dati) kolonnu skaits. Jā, to var apskatīt vidē RStudio, lai redzētu, cik daudz novērojumu un mainīgo ir, taču, iespējams, būs reizes, kad to vēlēsities uzzināt kā daļu no skripta. kolnevi (sniega dati) vai vārdi (sniega dati) dod jums vārdu sniega dati kolonnas. vietvārdi (sniega dati) dodiet jums rindu nosaukumus (ja neviens no tiem netika iestatīts, pēc noklusējuma tiks izmantotas rindas numura rakstzīmju virknes, piemēram, "1", "2", "3", utt.).

Dažas no šīm īpašajām datu ietvara funkcijām, kas pazīstamas arī kā metodes, ne tikai sniedz jums informāciju, bet ļauj mainīt datu rāmja īpašības. Tātad, vārdi (sniega dati) stāsta datu kolonnā kolonnu nosaukumus, bet

nosaukumi (sniega dati) <- c ("Ziema", "Sniega collas", "Sniega metri")

izmaiņas kolonnu nosaukumi datu rāmī.

Jums, iespējams, nebūs jāzina visas pieejamās datu rāmja objekta metodes, bet, ja vēlaties zināt, metodes (klase = klase (sniega dati)) tos parāda. Lai uzzinātu vairāk par jebkuru metodi, palaidiet parasto palīdzības vaicājumu ar jautājuma zīmi, piemēram, ? sapludināt vai apakškopa.

Kad skaitlis patiesībā nav skaitlis

Pasta indeksi ir labs “ciparu” piemērs, pret kuriem patiesībā nevajadzētu izturēties. Lai arī tas ir tehniski skaitlisks, nav jēgas darīt, piemēram, pievienot divus pasta indeksus kopā vai ņemt vidējo pasta indeksu kopienā. Ja importējat pasta koda kolonnu, R, visticamāk, to pārveidos par skaitļu kolonnu. Un, ja jums ir darīšana ar apgabaliem Jaunanglijā, kur pasta indeksi sākas ar 0, 0 pazudīs.

Man ir tabulas atdalīts Bostonas pasta kodu fails pēc rajoniem, kas lejupielādēts no Masačūsetsas valdības aģentūras vietnē //raw.githubusercontent.com/smach/R4JournalismBook/master/data/bostonzips.txt. Ja es mēģinātu to importēt ar rāvējslēdzēji <- rio :: import ("bostonzips.txt"), pasta indeksi būtu 2118, 2119 utt., nevis 02118, 02119 utt.

Tas ir tas, kur tas palīdz mazliet uzzināt par pamata funkciju, kas ir rio imports () funkcija izmanto. Šīs pamatfunkcijas varat atrast, izlasot importēt palīdzības fails vietnē ? imports. Lai ievilktu ar tabulām atdalītus failus, importēt izmanto vai nu maize () no datu tabulas paketes vai bāzes R read.table () funkciju. The ? lasīt.tabula palīdzība saka, ka jūs varat norādīt kolonnu klases ar colClasses arguments.

Pašreizējā projekta direktorijā izveidojiet datu apakšdirektoriju, pēc tam lejupielādējiet failu bostonzips.txt

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

Ja importējat šo failu, abas kolonnas norādot kā rakstzīmju virknes, pasta indeksi būs pareizi noformēti:

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

Ņemiet vērā, ka kolonnu klases jāiestata, izmantojot c () funkcija, c ("raksturs", "raksturs"). Ja jūs mēģinājāt colClasses, "character", jūs saņemsit kļūdas ziņojumu. Šī ir tipiska kļūda R iesācējiem, taču nevajadzētu ilgt ilgu laiku, lai iekļūtu c () ieradums.

Tip-save-some-typing: Ievadīšana c ("raksturs", "raksturs") nav nemaz tik grūts; bet, ja jums ir izklājlapa ar 16 kolonnām, kur pirmajām 14 jābūt rakstzīmju virknēm, tas var kļūt nepatīkams. R's pārstāvis () funkcija var palīdzēt. pārstāvis (), kā jūs, iespējams, uzminējāt, atkārto jebkuru vienumu, kuru tam piešķirat, lai cik reizes jūs to sakāt, izmantojot formātu rep (myitem, numtimes). rep ("raksturs", 2) ir tas pats, kas c ("raksturs", "raksturs"), tātad colClasses = rep ("raksturs", 2) ir ekvivalents colClasses = c ("raksturs", "raksturs") . Un, colClasses = c (rep ("raksturs", 14), rep ("cipars", 2)) pirmās 14 kolonnas iestata kā rakstzīmju virknes, bet pēdējās divas - kā skaitļus. Visiem kolonnu klašu nosaukumiem šeit jābūt pēdiņās, jo nosaukumi ir rakstzīmju virknes.

Es iesaku jums nedaudz paspēlēties pārstāvis () lai jūs pierastu pie formāta, jo tā ir sintakse, ko izmanto arī citas R funkcijas.

Vienkārši datu paraugi

R nāk ar dažām iebūvētām datu kopām, kuras ir viegli izmantot, ja vēlaties spēlēt ar jaunām funkcijām vai citām programmēšanas metodēm. Tos daudz lieto arī cilvēki, kas māca R, jo pasniedzēji var būt droši, ka visi studenti sāk ar vieniem un tiem pašiem datiem tieši tādā pašā formātā.

Tips dati () lai redzētu pieejamās iebūvētās datu kopas R bāzē un visas instalētās pakotnes, kas pašlaik ir ielādētas. dati (pakete = .paketes (visas.pieejamās = PATIESA)) no bāzes R parāda visas iespējamās datu kopas no jūsu sistēmā instalētajām pakotnēm neatkarīgi no tā, vai tās ir vai nav ielādētas atmiņā jūsu pašreizējās darba sesijas laikā.

Jūs varat iegūt vairāk informācijas par datu kopu tāpat kā saņemat palīdzību ar funkcijām: ? datu kopas nosaukums vai palīdzība ("datu kopas nosaukums"). mtcars un varavīksnene ir vieni no tiem, kurus esmu redzējis lietojot ļoti bieži.

Ja rakstāt mtcars, visa mtcars datu kopa tiek izdrukāta jūsu konsolē. Jūs varat izmantot galva () funkciju, lai apskatītu pirmās pāris rindas ar galva (mtcars).

Ja vēlaties, varat saglabāt šo datu kopu citā mainīgajā, izmantojot tādu formātu kā cardata <- mtcars.

Varat arī palaist datu funkciju ar datu kopas nosaukumu, piemēram dati (mtcars), ielādē datu kopu savā darba vidē.

Viena no interesantākajām paketēm ar žurnālu žurnālu datu kopu paraugiem ir pakete piecu gadu garumā, kurai ir dati no FiveThirtyEight.com vietnē publicētajiem stāstiem. Paketi izveidoja vairāki akadēmiķi, konsultējoties ar FiveThirtyEight redaktoriem; tas ir paredzēts kā resurss bakalaura statistikas mācīšanai.

Fasēti dati var būt noderīgi un dažos gadījumos arī jautri. Reālajā pasaulē jūs, iespējams, neizmantojat tik ērti iepakotus datus.

Manuāli izveidojiet datu rāmi R

Iespējams, jūs bieži nodarbojaties ar datiem, kas sākas ārpus R un kurus importējat no izklājlapas, CSV faila, API vai cita avota. Bet dažreiz jūs varat vienkārši ierakstīt nelielu datu daudzumu tieši R vai citādi manuāli izveidot datu rāmi. Tāpēc apskatīsim, kā tas darbojas.

R datu rāmji pēc noklusējuma tiek apkopoti kolonnās pa kolonnām, nevis viens rinda laikā. Ja vēlaties apkopot ātru pilsētas vēlēšanu rezultātu datu kopu, varat izveidot kandidātu vārdu vektoru, otru vektoru ar viņu piederību partijai un pēc tam viņu balsu kopsummas vektoru:

kandidāti <- c ("Smith", "Jones", "Write-ins", "Blanks")

partija <- c ("demokrāts", "republikānis", "", "")

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

Atcerieties, ka skaitļos nelietojiet komatus, kā jūs varētu darīt programmā Excel.

Lai no šīm kolonnām izveidotu datu rāmi, izmantojiet data.frame () funkcija un sintakse data.frame (1., 2., 3. sleja).

myresults <- data.frame (kandidāti, partija, balsis)

Pārbaudiet tā struktūru ar str ():

str (myresults)

Kamēr kandidāti un partija vektori ir varoņi, kandidāti un partija datu rāmja kolonnas ir pārvērsti par R objektu klasi, ko sauc par faktoriem. Šajā brīdī ir mazliet par nezālēm, lai iedziļinātos faktoru atšķirībā no rakstzīmēm, izņemot to, ka tas tiek teikts

  1. Faktori var būt noderīgi, ja vēlaties pasūtīt vienumus noteiktā, alfabētiskā veidā grafiku veidošanai un citiem mērķiem, piemēram, Nabadzīgs ir mazāks par Taisnīgi ir mazāks par Labi ir mazāks par Izcili.
  2. Faktori var izturēties savādāk, nekā jūs dažreiz varētu sagaidīt. Es iesaku ievērot rakstzīmju virknes, ja vien jums nav pamatota iemesla, lai īpaši gribētu faktorus.

Veidojot datu rāmjus, rakstzīmju virknes var saglabāt neskartas, pievienojot argumentu stringsAsFactors = FALSE:

myresults <- data.frame (kandidāti, partija, balsis, virknesAsFactors = FALSE) str (myresults)

Tagad vērtības ir tās, kuras jūs gaidījāt.

Veidojot datu rāmjus šādā veidā, jums jābrīdina vēl viena lieta: ja viena kolonna ir īsāka par otru (-ām), R dažreiz atkārtos datus no īsākās kolonnas—vai vēlaties, lai tas notiktu.

Pieņemsim, ka, piemēram, jūs izveidojāt vēlēšanu rezultātu slejas kandidātiem un partijām, bet balsu rezultātus ievadījāt tikai par Smitu un Džonsu, nevis uz Pierakstīšanās un Blankiem. Jūs varētu sagaidīt, ka datu rāmī pārējie divi ieraksti tiks rādīti kā tukši, bet tu kļūdītos. Izmēģiniet to un redziet, izveidojot jaunu balsu vektoru tikai ar diviem skaitļiem un izmantojot šo jauno balsu vektoru, lai izveidotu citu datu rāmi:

balsis <- c (15248, 16723)

myresults2 <- data.frame (kandidāti, partija, balsis)

str (myresults2)

Pareizi, R atkārtoti izmantoja pirmos divus skaitļus, kas noteikti ir ko jūs vēlaties. Ja jūs mēģināt to izdarīt ar trim skaitļiem balsu vektorā, nevis diviem vai četriem, R radīs kļūdu. Tas ir tāpēc, ka katru ierakstu nevarēja pārstrādāt tikpat reižu.

Ja tagad jūs domājat: "Kāpēc es nevaru izveidot datu rāmjus, kas virknes automātiski nemaina faktoros? Un kāpēc man jāuztraucas par datu rāmju atkārtotu vienas kolonnas datu izmantošanu, ja aizmirstu pabeigt visus datus? ” Hadlijam Vikhamam bija tāda pati doma. Viņa tibble pakete rada R klasi, sauktu arī par tibble, kas, pēc viņa teiktā, ir “mūsdienīga datu rāmju pieņemšana. Viņi saglabā funkcijas, kas izturējušas laika pārbaudi, un atmet funkcijas, kas agrāk bija ērtas, bet tagad ir nomākta. ”

Ja tas jūs aicina, instalējiet tibble pakotni, ja tā nav jūsu sistēmā, un pēc tam mēģiniet izveidot tibble ar

myresults3 <- tibble :: tibble (kandidāti, partija, balsis)

un jūs saņemsit kļūdas ziņojumu, ka balsu slejai jābūt vai nu četrām vienībām, vai vienai vienai (tibble () atkārtos vienu vienumu tik reižu, cik nepieciešams, bet tikai vienam vienumam).

Atkārtojiet balsu sleju līdz četriem ierakstiem, ja vēlaties izveidot pārskatu ar šiem datiem:

bibliotēka (tibble)

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

myresults3 <- tibble (kandidāti, partija, balsis)

str (myresults3)

Tas izskatās līdzīgi datu rāmim - patiesībā ir datu ietvars, bet ar īpašu uzvedību, piemēram, kā tas tiek drukāts. Ievērojiet arī to, ka kandidātu slejā ir rakstzīmju virknes, nevis faktori.

Ja jums patīk šī uzvedība, dodieties uz priekšu un izmantojiet tibbles. Tomēr, ņemot vērā to, cik plaši tradicionālie datu rāmji paliek R, joprojām ir svarīgi zināt par to noklusējuma uzvedību.

Datu eksportēšana

Bieži vien pēc tam, kad esat izdomājis datus R, vēlaties saglabāt savus rezultātus. Šeit ir daži no datu eksportēšanas veidiem, kurus es parasti izmantoju:

Saglabāt CSV failā ar rio :: eksportēt (myObjectName, file = "myFileName.csv") un uz Excel failu ar rio :: eksportēt (myObjectName, file = "myFileName.xlsx"). rio saprot, kādu faila formātu vēlaties, pamatojoties uz faila nosaukuma paplašinājumu. Ir vairāki citi pieejamie formāti, tostarp .tsv ar tabulām atdalītiem datiem, .json par JSON un .xml XML.

Saglabāt binārā objektā R tas atvieglo turpmāku sesiju atkārtotu ielādi R. Ir divas iespējas.

Vispārējs saglabāt () saglabā failā vienu vai vairākus objektus, piemēram, saglabāt (objectName1, objectName2, file = "myfilename.RData"). Lai šos datus atkal nolasītu R, vienkārši izmantojiet komandu ielādēt ("myfilename.RData") un visi objekti atgriežas ar tiem pašiem nosaukumiem tādā pašā stāvoklī, kādā tie bija iepriekš.

Jūs varat arī saglabāt vienu objektu failā ar saveRDS (myobject, file = "faila nosaukums.rds"). Loģisks pieņēmums ir tāds, ka loadRDS nolasīs failu atpakaļ, bet tā vietā komanda ir lasītRDS—Un šajā gadījumā ir glabāti tikai dati, nevis objekta nosaukums. Tātad, jums ir jāizlasa dati jaunā objekta nosaukumā, piemēram, mydata <- readRDS ("faila nosaukums.rds").

Ir trešais veids, kā saglabāt R objektu tieši R: ģenerējot R komandas, kas objekta vietā ar gala rezultātiem atjaunotu objektu. Bāzes R funkcijas R faila ģenerēšanai objekta atjaunošanai ir dput () vai izgāzt (). Tomēr es uzskatu rio :: eksportēt (myobject, "mysavedfile.R") vēl vieglāk atcerēties.

Visbeidzot, ir papildu veidi, kā saglabāt failus, kas optimizē lasāmību, ātrumu vai saspiešanu, kurus es pieminēju papildu resursu sadaļā šī raksta beigās.

Varat arī eksportēt R objektu savā Windows vai Mac starpliktuvē ar rio: rio :: eksportēt (myObjectName, formāts). Un jūs varat importēt datus R no starpliktuves tādā pašā veidā: rio :: importēt (fails).

Bonuss: Rio's konvertēt () funkcija ļauj - jūs to uzminējāt - pārveidot vienu faila tipu citā, bez nepieciešamības manuāli ievilkt datus R un pēc tam izņemt no tā. ? konvertēt lai iegūtu vairāk informācijas.

Pēdējais punkts: RStudio ļauj noklikšķināt, lai importētu failu, vispār nerakstot kodu. Tas nav kaut kas, ko es iesaku, kamēr importēšana no komandrindas jums nav ērta. Es domāju, ka ir svarīgi saprast importēšanas kodu. Bet, es pieļauju, ka tas var būt ērts saīsne.

RStudio apakšējās labās rūts cilnē Faili dodieties uz failu, kuru vēlaties importēt, un noklikšķiniet uz tā. Tiks parādīta opcija Skatīt failu vai Importēt datu kopu. Izvēlieties Importēt datu kopu, lai skatītu dialoglodziņu, kurā tiek priekšskatīti dati, ļaujot modificēt datu importēšanas veidu un priekšskatīt ģenerējamo kodu.

Veiciet visas nepieciešamās izmaiņas un noklikšķiniet uz Importēt, un jūsu dati tiks ievilkti R.

Papildu resursi

rio alternatīvas. Lai gan rio ir lielisks Šveices armijas failu apstrādes nazis, var būt reizes, kad vēlaties mazliet vairāk kontrolēt, kā jūsu dati tiek ievilkti vai saglabāti no R. Turklāt ir bijuši gadījumi, kad man ir bijuši izaicinājumi datu fails, kuru Rio noslāpēja, bet ar to varēja rīkoties cita pakete. Dažas citas funkcijas un paketes, kuras, iespējams, vēlēsities izpētīt:

  • Bāze R lasīt.csv () un read.table () lai importētu teksta failus (izmantojiet ? lasīt.csv un ? lasīt.tabula lai iegūtu vairāk informācijas). stringsAsFactors = FALSE ir nepieciešams ar šiem, ja vēlaties saglabāt rakstzīmju virknes kā rakstzīmju virknes. rakstīt.csv () saglabā CSV.
  • rio izmanto Excel failu lasīšanai Hadley Wickham paketi readxl. Vēl viena Excel alternatīva ir openxlsx, kas var rakstīt Excel failā, kā arī lasīt to. Apskatiet openxlsx paketes vinjetes, lai iegūtu informāciju par izklājlapu formatēšanu, eksportējot.
  • Vikhema readr pakete ir arī vērts apskatīt kā daļu no “tidyverse”. readr ietver funkcijas CSV, ar ciļām atdalītu, fiksēta platuma, tīmekļa žurnālu un vairāku citu veidu failu lasīšanai. readr izdrukā datu veidu, ko tā ir noteikusi katrai kolonnai - vesels skaitlis, rakstzīme, dubultā (nav veseli skaitļi) utt. Tas rada tabulas.

Importēt tieši no Google izklājlapas. Pakete googlesheets ļauj importēt datus no Google izklājlapu izklājlapas, pat ja tā ir privāta, autentificējot savu Google kontu. Pakete ir pieejama CRAN; instalējiet to, izmantojotinstall.packages ("googlesheets"). Pēc ielādes ar bibliotēka ("googlesheets"), izlasiet lielisko ievada vinjeti. Šīs rakstīšanas laikā intro vinjete bija pieejama R plkst vinjete ("basic-use", package = "googlesheets"). Ja to neredzat, mēģiniet palīdzība (package = "googlesheets") un noklikšķiniet uz saites Lietotāju rokasgrāmatas, Iepakojuma vinjetes un Cita dokumentācija, lai atrastu pieejamās vinjetes, vai skatiet informāciju par pakotni vietnē GitHub vietnē //github.com/jennybc/googlesheets.

Nokasīt datus no Web lapām ar paketi rvest un pārlūka paplašinājumu SelectorGadget vai JavaScript grāmatzīmi. SelectorGadget palīdz jums atklāt CSS elementus datiem, kurus vēlaties kopēt un kuri atrodas HTML lapā; tad rvest izmanto R, lai atrastu un saglabātu šos datus. Šī nav tehnika iesācējiem iesācējiem, taču, kad esat ieguvis kādu R pieredzi zem jostas, varat vēlēties atgriezties un vēlreiz to apskatīt. Man ir dažas instrukcijas un videoklips, kā to izdarīt vietnē //bit.ly/Rscraping. RStudio ir pieejams arī tīmekļa seminārs pēc pieprasījuma.

Alternatīvas R saglabāšanas un lasīšanas funkciju bāzei. Ja strādājat ar lielām datu kopām, ātrums jums var kļūt svarīgs, saglabājot un ielādējot failus. Data.table pakete ir ātra maize () funkciju, bet uzmanieties, ka iegūtie objekti ir dati.tabulas, nevis vienkārši datu rāmji; daži uzvedības veidi ir atšķirīgi. Ja vēlaties parastu datu rāmi, varat to iegūt ar as.data.frame (mydatatable) sintakse. Data.table pakete rakstīt () funkcija ir paredzēta, lai ierakstītu CSV failā ievērojami ātrāk nekā bāzes R rakstīt.csv ().

Datu glabāšanai un izgūšanai varētu būt interesanti divi citi pakotnes. Spalvu pakete saglabā binārā formātā, kuru var nolasīt vai nu R, vai Python. Un pirmā pakete lasīt.fst () un write.fst () piedāvā ātru R datu rāmja objektu saglabāšanu un ielādi, kā arī failu saspiešanas iespēju.

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