Programmēšana

5 parocīgas opcijas R data.table tabulā

Tāpat kā visas funkcijas paketē data.table R, arī faili ir ātri. Ļoti ātri. Bet tur ir kas vairāk nekā ātrums. Tam ir vairākas noderīgas funkcijas un iespējas, importējot ārējos datus R. Šeit ir pieci visnoderīgākie.

Piezīme. Ja vēlaties sekot līdzi, lejupielādējiet New York Times CSV failu par ikdienas Covid-19 gadījumiem pēc ASV apgabala vietnē //github.com/nytimes/covid-19-data/raw/master/us-counties. csv.

Izmantojiet opciju fread’s nrows

Vai jūsu fails ir liels? Vai jūs vēlētos izpētīt tā struktūru pirms visa faila importēšanas - bez jāatver teksta redaktorā vai Excel? Izmantojiet rupjības nrows iespēja importējiet tikai daļu no faila izpētei.

Zemāk esošais kods importē tikai pirmās 10 CSV rindas.

mydt10 <- fread ("us-county.csv", nrows = 10)

Ja vēlaties tikai redzēt kolonnu nosaukumus bez jebkādiem datiem, varat to izmantot nrows = 0

Izmantojiet opciju fread's

Kad zināt faila struktūru, varat izvēlieties, kuras kolonnas importēt. fread's atlasiet opcija ļauj jums izvēlēties kolonnas, kuras vēlaties paturēt. atlasiet ņem katras kolonnas vektoru vārdi vai kolonnas pozīcija numuri. Ja nosaukumi, tiem jābūt pēdiņās, tāpat kā lielākajai daļai rakstzīmju virkņu vektoru:

mydt <- fread ("us-county.csv",

select = c ("datums", "novads", "valsts", "gadījumi"))

Kā vienmēr, skaitļiem nav vajadzīgas pēdiņas:

mydt <- fread ("us-county.csv", izvēlieties = c (1,2,3,5))

Jūs varat izmantot objektu R ar kolonnu nosaukumu vektoru iekš faila, kā redzat šajā nākamajā kodu grupā. Es izveidoju vektoru my_cols ar datumu, apgabalu, valsti un gadījumiem; tad es izmantoju šo vektoru rētas iekšpusē.

my_cols <- c ("datums", "novads", "štats", "gadījumi")

mydt <- fread ("us-county.csv", select = my_cols)

Pretstats atlasiet ir nomest. Jūs varat izvēlēties importēt visas kolonnas izņemot tie, ar kuriem jūs norādāt nomest, piemēram:

mydt <- fread ("us-county.csv", drop = c ("fips", "nāves gadījumi"))

Tāpat kā ar atlasiet, nomest ņem kolonnu nosaukumu vai skaitlisko pozīciju vektoru.

Izmantojiet maizi ar grep

Ja esat iepazinies ar Unix, varat izpildīt komandrindas rīkus tieši no iekšpuses. Piemēram, ja es gribētu tikai Kalifornijas datus, es varētu izmantot grep, lai importētu tikai rindas, kurās ir teksts “Kalifornija”. Ņemiet vērā, ka tas meklē katrā rindā kā teksta virkne, nevis noteikta kolonna, tāpēc jūsu datiem jābūt tādā formātā, kādā tas ir jēga.

ca <- fread ("grep California us-counties.csv")

Diemžēl grep nesaprot sākotnējā faila kolonnu nosaukumus, tāpēc jums tiks piešķirti noklusējuma nosaukumi.

galva (ca) V1 V2 V3 V4 V5 V6 1: 2020-01-25 Oranža Kalifornija 6059 1 0 2: 2020-01-26 Losandželosa Kalifornija 6037 1 0 3: 2020-01-26 Oranža Kalifornija 6059 1 0 4: 2020 -01-27 Losandželosa Kalifornija 6037 1 0 5: 2020-01-27 Oranža Kalifornija 6059 1 0 6: 2020-01-28 Losandželosa Kalifornija 6037 1 0

Tomēr fread ļauj mums norādīt kolonnu nosaukumus ar kol.nosaukumi opcija. Es varu iestatīt nosaukumus, pamatojoties uz nosaukumiem no mydt10, ko izveidoju iepriekš.

ca galva (ca) datums apgabala štata gadījumi nāves gadījumi 1: 2020-01-25 Oranžā Kalifornija 6059 1 0 2: 2020-01-26 Losandželosa Kalifornija 6037 1 0 3: 2020-01-26 Oranža Kalifornija 6059 1 0 4: 2020-01-27 Losandželosa, Kalifornija 6037 1 0 5: 2020-01-27 Oranža Kalifornija 6059 1 0 6: 2020-01-28 Losandželosa, Kalifornija 6037 1 0

Mēs varam izmantot arī regulāras izteiksmes ar grep's -E opcija, ļaujot mums veikt sarežģītākus meklējumus, piemēram, meklēt četrus stāvokļus uzreiz.

štati4 <- fread (cmd = "grep -E 'Texas | Arizona | Florida | South Carolina' us-county.csv",

col.names = nosaukumi (mydt10))

Vēlreiz atgādinājums: Tas meklē katru no šiem valstu nosaukumiem jebkur rindā, ne tikai statusa slejā. Ja palaidīsit iepriekš minēto kodu un pārbaudīsit, kuri stāvokļi ir iekļauti rezultātos unikāls (štati4 $ štats), štatu kolonnā kopā ar Teksasu, Arizonu, Floridu un Dienvidkarolīnu redzēsiet Oklahomu un Misūri. Tas ir tāpēc, ka gan Oklahomai, gan Misūri ir novados vārdā Teksasa.

Tātad, grep failu importēšanas laikā ir veids, kā no ļoti lielas datu kopas filtrēt daudz nevēlamu datu; bet tas negarantē, ka jūs saņemat tikai to, ko vēlaties. Pēc šāda veida importēšanas jums joprojām vajadzētu īpaši filtrēt kolonnu datus, lai pārliecinātos, ka nesaņēmāt neko negaidītu.

Izmantojiet opciju fread’s colClasses

Jūs varat iestatiet kolonnu klases importēšanas laikā - tikai dažām kolonnām, nevis katrai. Piemēram, datuma kolonna šajos datos tiek ievadīta kā rakstzīmju virkne, kaut arī tā ir gada-mēneša-dienas formātā. Mēs varam iestatīt kolonnu ar nosaukumu datums datu tipam Datums importēšanas laikā, izmantojot colClasses opcija.

mydt <- fread ("us-county.csv", colClasses = c ("date" = "Date"))

Tagad datumi ir datumi.

> str (mydt) klases ‘data.table’ un ’data.frame’: 322651 obs. no 6 mainīgajiem: $ date: Date, format: "2020-01-21" "2020-01-22" "2020-01-23" ... $ county: chr "Snohomish" "Snohomish" "Snohomish" "Cook "... $ state: chr" Washington "" Washington "" Washington "" Illinois "... $ fips: int 53061 53061 53061 17031 53061 6059 17031 53061 4013 6037 ... $ gadījumi: int 1 1 1 1 1 1 1 1 1 1 ... $ nāves gadījumi: int 0 0 0 0 0 0 0 0 0 0 0 ...

Izmantojiet fread failus saspiestos failos

Jūs varat importējiet saspiestu failu, vispirms to neatvienojot. ar fread var tieši importēt gz un bz2 failus, piemēram,mydt <- fread ("myfile.gz"). Ja jums jāimportē zip fails, varat to noņemt ar atvienot sistēmas komanda, izmantojot sintaksimydt <- fread (cmd = 'unzip -cq myfile.zip').

Lai iegūtu vairāk R padomu, dodieties uz lapu Do More With R.

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