Programmēšana

Kā sapludināt datus R, izmantojot R apvienot, dplyr vai data.table

R ir vairāki ātri un eleganti veidi, kā datu rāmjus savienot ar kopēju kolonnu. Es gribētu jums parādīt trīs no viņiem:

  • bāzes R apvienot () funkcija,
  • pievienoties funkciju saimei un
  • data.table iekavu sintakse.

Iegūstiet un importējiet datus

Šajā piemērā es izmantošu vienu no manām iecienītākajām demonstrācijas datu kopām - lidojumu kavēšanās laikus no ASV Transporta statistikas biroja. Ja vēlaties sekot līdzi, dodieties uz //bit.ly/USFlightDelays un lejupielādējiet datus par izvēlēto laika periodu ar kolonnām Lidojuma datums, Reporting_Airline, Izcelsme, Galamērķis, un DepartureDelayMinutes. Iegūstiet arī uzmeklēšanas tabulu Reporting_Airline.

Vai arī lejupielādējiet šīs divas datu kopas - plus manu R kodu vienā failā un PowerPoint, kas izskaidro dažādu veidu datu sapludināšanu - šeit:

lejupielādējiet kodu, datus un PowerPoint, lai sapludinātu datus R. Rakstam pievienoti vairāki datu faili, PowerPoint un R skripts. Šarona Mačlisa

Lai lasītu failā ar bāzes R, es vispirms izpakoju lidojuma kavēšanās failu un pēc tam importēju gan lidojuma kavēšanās datus, gan koda meklēšanas failu ar lasīt.csv (). Ja izmantojat kodu, lejupielādētajam kavēšanās failam, iespējams, būs cits nosaukums nekā zemāk esošajā kodā. Ņemiet vērā arī to, ka uzmeklēšanas fails ir neparasts .csv_ pagarinājums.

izpakot ("673598238_T_ONTIME_REPORTING.zip")

mydf <- lasīt.csv ("673598238_T_ONTIME_REPORTING.csv",

sep = ",", quote = "\" ")

mylookup <- lasīt.csv ("L_UNIQUE_CARRIERS.csv_",

quote = "\" ", sep =", ")

Pēc tam es palūrēšu abus failus ar galva ():

head (mydf) FL_DATE OP_UNIQUE_CARRIER ORIGIN DEST DEP_DELAY_NEW X 1 2019-08-01 DL ATL DFW 31 NA 2 2019-08-01 DL DFW ATL 0 NA 3 2019-08-01 DL IAH ATL 40 NA 4 2019-08-01 DL PDX SLC 0 NA 5 2019-08-01 DL SLC PDX 0 NA 6 2019-08-01 DL DTW ATL 10 NA

vadītājs (mylookup) Kods Apraksts 1 02Q Titan Airways 2 04Q Tradewind Aviation 3 05Q Comlux Aviation, AG 4 06Q Master Top Linhas Aereas Ltd. 5 07Q Flair Airlines Ltd. 6 09Q Swift Air, LLC d / b / a Eastern Air Lines d / b / a Austrumu

Apvienojas ar pamatni R

Mydf kavēšanās datu ietvarā ir informācija par aviokompānijām tikai pēc koda. Es vēlētos pievienot kolonnu ar aviosabiedrību nosaukumiem no mylookup. Viens bāzes R veids, kā to izdarīt, ir apvienot () funkciju, izmantojot pamata sintaksi apvienot (df1, df2). Nav nozīmes datu rāmja 1 un datu rāmja 2 secībai, bet tas, kurš ir pirmais, tiek uzskatīts par x, bet otrais ir y.

Ja kolonnām, ar kurām vēlaties pievienoties, nav tāda paša nosaukuma, jums jāsaka apvienošanai, ar kurām kolonnām vēlaties pievienoties: by.x x datu rāmja kolonnas nosaukumam un by.y par y vienu, piemēram, apvienot (df1, df2, by.x = "df1ColName", by.y = "df2ColName").

Varat arī pateikt sapludināšanai, vai vēlaties, lai visas rindas, ieskaitot rindas bez atbilstības, vai tikai atbilstošās rindas, ar argumentiem all.x un sabiedrotais. Šajā gadījumā es vēlētos visas aizkaves datu rindas; ja uzmeklēšanas tabulā nav aviokompānijas koda, es joprojām vēlos saņemt informāciju. Bet man nav vajadzīgas rindas no uzmeklēšanas tabulas, kuras nav aizkavēšanās datos (ir daži veco aviokompāniju kodi, kas tur vairs nelido). Tātad, all.x ir vienāds PATIESA bet sabiedrotais ir vienāds FALSE. Pilns kods:

join_df <- apvienot (mydf, mylookup, by.x = "OP_UNIQUE_CARRIER",

by.y = "Kods", all.x = TRUE, all.y = FALSE)

Jaunajā apvienotajā datu ietvarā ir sleja ar nosaukumu Apraksts ar aviokompānijas nosaukumu, pamatojoties uz pārvadātāja kodu.

head (join_df) OP_UNIQUE_CARRIER FL_DATE ORIGIN DEST DEP_DELAY_NEW X Apraksts 1 9E 2019-08-12 JFK SYR 0 NA Endeavor Air Inc. 2 9E 2019-08-12 TYS DTW 0 NA Endeavor Air Inc. 3 9E 2019-08-12 ORF LGA 0 NA Endeavour Air Inc. 4 9E 2019-08-13 IAH MSP 6 NA Endeavour Air Inc. 5 9E 2019-08-12 DTW JFK 58 NA Endeavour Air Inc. 6 9E 2019-08-12 SYR JFK 0 NA Endeavour Air Inc .

Pievienojas ar dplyr

Pievienošanās funkcijām dplyr izmanto SQL datu bāzes sintaksi. A pa kreisi pievienoties nozīmē: Iekļaut visu kreisajā pusē (kāds bija x datu rāmis apvienot ()) un visas rindas, kas sakrīt no labā (y) datu rāmja. Ja pievienošanās kolonnām ir tāds pats nosaukums, viss, kas jums nepieciešams, ir left_join (x, y). Ja viņiem nav tāda paša nosaukuma, jums ir nepieciešams pēc arguments, piemēram, left_join (x, y, autors = c ("df1ColName" = "df2ColName")) .

Ievērojiet domēna sintaksi pēc: Tas ir nosaukts vektors, kura kreisās un labās kolonnas nosaukums ir pēdiņās.

Kods, lai importētu un apvienotu abas datu kopas, izmantojot left_join () ir zemāk. Tas sākas ar pakotņu dplyr un readr ielādi un pēc tam nolasa abus failus ar lasīt_csv (). Lietojot lasīt_csv (), Man nav nepieciešams vispirms atvienot failu.

bibliotēka (dplyr)

bibliotēka (lasīt)

mytibble <- read_csv ("673598238_T_ONTIME_REPORTING.zip")

mylookup_tibble <- lasīt_csv ("L_UNIQUE_CARRIERS.csv_")

join_tibble <- left_join (mytibble, mylookup_tibble,

autors = c ("OP_UNIQUE_CARRIER" = "Kods")

lasīt_csv () rada tibbles, kas ir sava veida datu rāmis ar dažām papildu funkcijām. left_join () apvieno abus. Apskatiet sintaksi: Šajā gadījumā nozīme ir kārtībai. left_join () nozīmē iekļaut visas rindas pa kreisi vai pirmo datu kopu, bet tikai tās rindas, kas sakrīt ar otro. Un, tā kā man jāpievienojas divām atšķirīgi nosauktajām kolonnām, es iekļāvu a pēc arguments.

Rezultāta struktūru mēs varam aplūkot ar dplyr’s ieskats () funkciju, kas ir vēl viens veids, kā apskatīt dažus galvenos datu rāmja vienumus.

ieskats (join_tibble) Novērojumi: 658 461 Mainīgie: 7 $ FL_DATE 2019-08-01, 2019-08-01, 2019-08-01, 2019-08-01, 2019-08-01… $ OP_UNIQUE_CARRIER "DL", "DL "," DL "," DL "," DL "," DL "," DL "," DL "," DL "," DL ", ... $ ORIGIN" ATL "," DFW "," IAH "," PDX "," SLC "," DTW "," ATL "," MSP "," JF… $ DEST "DFW", "ATL", "ATL", "SLC", "PDX", "ATL", "DTW "," JFK "," MS ... $ DEP_DELAY_NEW 31, 0, 40, 0, 0, 10, 0, 22, 0, 0, 0, 17, 5, 2, 0, 0, 8, 0,… $ X6 NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,… $ Apraksts "Delta Air Lines Inc.", "Delta Air Lines Inc.", " Delta Air…

Šai apvienotajai datu kopai tagad ir jauna sleja ar aviokompānijas nosaukumu. Ja pats palaižat šī koda versiju, iespējams, pamanīsit, ka dplyr bija daudz ātrāks nekā bāzes R.

Pēc tam aplūkosim ļoti ātru pievienošanās veidu.

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