Greitis. Glausta sintaksė. Suderinamumas atgal.
Bet ypač greitis.
Tai yra keletas funkcijų, dėl kurių R duomenys. Lentelė patraukia savo gerbėjus.
Net jei esate patvirtintas tvarkingas vartotojas (kaip ir aš), „data.table“ gali būti naudingas jūsų „R“ rinkinio priedas, ypač dirbant su dideliais duomenų rinkiniais, „Shiny“ programoje ar paketo funkcijoje.
Šis „R data.table“ pagrindinis apgaulės lapas skiriasi nuo daugelio kitų, nes jis yra interaktyvus. Galite ieškoti konkrečios frazės, pvz pridėti stulpelį arba pagal užduočių grupės tipą, pvz Pogrupis arba Pertvarkykite. Be to, kadangi šiame apgaulės lape yra „tidyverse“ vertimo kodas, taip pat galite ieškoti mėgstamiausio veiksmažodžio, pvz., mutuoti arba iš eilės.
Registruoti vartotojai gali atsisiųsti išplėstinę šios interaktyvios lentelės versiją, skirtą naudoti savo sistemose! Registracija nemokama.
Ieškokite duomenų. Lentelės ir tvarkingos užduotys bei kodas
Užduotis | Tipas | duomenys. lentelės kodas | Tidiverso kodas |
---|---|---|---|
Skaityti CSV faile | Importuoti | mydt <- fread ("myfile.csv") | myt <- read_csv ("myfile.csv") #OR myt <- vroom :: vroom ("myfile.csv") |
Importuokite pirmąjį x CSV failo eilučių skaičių | Importuoti | mydt_x <- fread ("myfile.csv", nrows = x) | myt_x <- skaityti_csv ("myfile.csv", n_max = x) |
Importuokite tik tas eilutes iš CSV failo, kurios atitinka tam tikrą modelį | Importuoti | mydt_pattern <- fread ("grep 'mypattern' myfile.csv") | myt_pattern <- vroom :: vroom (pipe ("grep 'mypattern' myfile.csv")) |
Importuokite suspaustą .gz failą | Importuoti | mydt <- fread ("myfile.gz") | myt <- vroom :: vroom ("myfile.gz") |
Importuokite suspaustą a.zip failą | importas | mydt <- pluoštas (cmd = 'išpakuoti -cq myfile.zip') | myt <- skaitykite_csv ("myfile.zip") |
Sukurti duomenų lentelę iš esamo duomenų rėmelio („tidyverse“ tibble) | Importuoti | mydt <- as.data.table (mydf) # ARBA setDT (mydf) | myt <- as_tibble (mydf) |
Pakeiskite duomenis. Lentelė vietoje nedarant kopijos | Raizgytis | bet kuri funkcija, prasidedanti aibe, pvz., setkey (mydt, mycol) arba skliausteliuose naudojama operacija: = | netaikoma |
Rikiuoti eilutes pagal kelias stulpelių vertes | Raizgytis | mydt2 <- mydt [tvarka (colA, -colB)] # ARBA setorder (mydt, colA, -colB) | myt <- sutvarkyti (myt, colA, -colB) |
Pervardyti stulpelius | Raizgytis | setnames (mydt, old = c ('colA', 'colB'), new = c ('NewColA', 'NewColB')) | myt <- pervardyti (myt, NewColA = colA, NewColB = colB) |
Stulpelių pertvarkymas: perkelkite kai kuriuos stulpelius į priekinę (labiausiai kairę) padėtį | Raizgytis | setcolorder (mydt, c ("colB", "colC")) # colB dabar 1 pozicijoje ir colC 2 pozicijoje | myt <- persikelti (myt, colB, colC) |
Filtruokite eilučių numerio n eilutes | Pogrupis | mydt2 <- mydt [n] | myt2 <- griežinėlis (myt, n) |
Filtruokite paskutinę eilutę | Pogrupis | mydt2 <- mydt [.N] | myt2 <- griežinėlis (myt, n ()) |
Filtruokite eilutes pagal sąlygą | Pogrupis | # Kai kuriais atvejais raktinis raktas (mydt, colA, colB) paspartins loginių kolA ir colB testų našumą. tas pats ir su kitais stulpeliais mydt2 <- mydt [loginė išraiška] | myt2 <- filtras (myt, loginė išraiška) |
Filtruokite eilutes, kur colA lygi eilutei1 arba eilutei2 | Pogrupis | mydt2 <- mydt [colA% chin% c ("string1", "string2")] | myt2 <- filtras (myt, colA%% c ("string1", "string2")) |
Filtruokite eilutes, kuriose colA atitinka įprastą išraišką | Pogrupis | mydt2 <- mydt [colA% patinka% "mypattern"] | myt2 <- filtras (myt, stringr :: str_detect (colA, "mypattern")) |
Filtruokite eilutes, kur colA reikšmės yra tarp 2 skaičių | Pogrupis | mydt2 <- mydt [colA% tarp% c (n1, n2)] | myt2 <- filtras (myt, tarp (colA, n1, n2)) |
Filtruokite pirmąsias n eilutes pagal grupę | Pogrupis | mydt2 <- mydt [, .SD [1: n], pagal = groupcol] | myt2% group_by (groupcol)%>% griežinėlis (1: n) |
Filtruokite didžiausios vertės eilutes pagal grupes | Pogrupis | mydt2 <- mydt [, .SD [kuri.max (valcol)], pagal = groupcol] | myt2% group_by (groupcol)%>% filtras (valcol == max (valcol)) |
Pasirinkite stulpelį ir grąžinkite rezultatus kaip vektorių | Pogrupis | myvec <- mydt [, kolname] | myvec <- traukti (myt, kolname) |
Pasirinkite kelis stulpelius, kad sukurtumėte naujus duomenis. Lentelė (duomenų rėmelis arba „tidyverse“ lentelė) | Pogrupis | mydt2 <- mydt [, sąrašas (colA, colB)] # ARBA mydt2 <- mydt [,. (colA, colB)] # ARBA mydt2 <- mydt [, c ("colA", "colB")] | myt2 <- pasirinkite (myt, colA, colB) |
Pasirinkite kelis stulpelius naudodami kintamąjį, kuriame yra stulpelių pavadinimai | Pogrupis | my_col_names <- c ("colA", "colB") mydt2 <- mydt [, ..my_col_names] # ARBA mydt2 <- mydt [, my_col_names, with = FALSE] | my_col_names <- c ("colA", "colB") myt2 <- pasirinkite (myt, all_of (my_col_names)) |
Pasirinkite kelis stulpelius ir pervardykite kai kuriuos | Pogrupis | mydt2 <- mydt [,. (naujasvardas1 = col1, naujasis vardas2 = kol2, kol3)] | myt2 <- pasirinkite (myt, newname1 = col1, newname2 = col2, col3) |
Išskirkite kelis stulpelius | Pogrupis | mydt2 <- mydt [, -c ("colA", "colB")] # ARBA mydt2 <- mydt [,! c ("colA", "colB")] # ARBA my_col_names <- c ("colA", "colB") mydt2 <- mydt [,! .. my_col_names] | myt2 <- pasirinkite (myt, -c (colA, colB)) # ARBA my_col_names <- c ("colA", "colB") myt2 <- pasirinkite (myt, - {{my_col_names}}) |
Pašalinkite pasikartojančias eilutes pagal kelių stulpelių reikšmes | Pogrupis | mydt2 <- unikalus (mydt, = c ("colA", "colB")) | myt2 <- skiriasi (myt, colA, colB, .keep_all = TIESA) |
Skaičiuokite unikalias eilutes pagal kelis stulpelius | Apibendrinkite | unikalusN (mydt, = c ("colA", "colB")) | dabar (skiriasi (myt, colA, colB)) |
Atlikite suvestinius duomenų skaičiavimus | Apibendrinkite | mydt2 <- mydt [, myfun (colA ...)] | myt2% apibendrinti (ColName = myfun (colA ...)) |
Atlikite vienos grupės duomenų suvestinių skaičiavimus | Apibendrinkite | mydt2 <- mydt [, myfun (colA ...), pagal = groupcol] | myt2% group_by (groupcol)%>% apibendrinti ( NewCol = myfun (colA ...) ) |
Atlikite vienos grupės duomenų suvestinių skaičiavimus ir pavadinkite naują stulpelį | Apibendrinkite | mydt2 <- mydt [,. („MyNewCol = myfun“ (colA ...)), pateikė = groupcol] | myt2% group_by (groupcol)%>% apibendrinti ( NewCol = myfun (colA ...) ) |
Atlikite kelių grupių duomenų suvestinių skaičiavimus | Apibendrinkite | mydt2 <- mydt [, myfun (colA ...), pagal =. (groupcol1, groupcol2)] | myt2% group_by (groupcol1, groupcol2)%>% apibendrinti ( NewCol = myfun (colA ...) ) |
Atlikite filtruotų duomenų suvestinę pagal kelias grupes | Apibendrinkite | mydt2 <- mydt [filtro išraiška, myfun (colA), pagal =. (groupcol1, groupcol2)] | myt2% filtras (filtro išraiška)%>% group_by (groupcol1, groupcol2)%>% apibendrinti ( NewCol = myfun (colA), .groups = "keep" ) |
Skaičiuokite eilučių skaičių pagal grupes | Apibendrinkite | mydt2 <- mydt [,. N, pagal = groupcol] #vienai grupei # ARBA mydt2 <- mydt [, .N, pagal =. (groupcol1, groupcol2)] | myt2 <- skaičius (myt, groupcol) #vienai grupei #OR myt2 <- skaičius (myt, groupcol1, groupcol2) |
Apibendrinkite kelis stulpelius ir grąžinkite rezultatus į kelis stulpelius | Apibendrinkite | mydt2 <- mydt [, lapply (.SD, myfun), .SDcols = c („colA“, „colB“)] | myt2% apibendrinti ( skersai (c (colA, colB), myfun) ) |
Apibendrinkite kelis stulpelius pagal grupes ir grąžinkite rezultatus į kelis stulpelius | Apibendrinkite | mydt2 <- mydt [, lapply (.SD, myfun), .SDcols = c („colA“, „colB“), pagal = groupcol] | myt2% group_by (groupcol)%>% apibendrinti (skersai (c (colA, colB), myfun)) |
Pridėti stulpelį | Apskaičiuoti | mydt [, MyNewCol: = myfun (colA)] | mit% mutuoti( MyNewCol = myfun (colA) ) |
Pridėkite kelis stulpelius vienu metu | Apskaičiuoti | # naudoti bet kokią funkciją ar išraišką mydt [, ": =" (NewCol1 = myfun (colA), NewCol2 = colB + colC)] # ARBA mydt [, c ("NewCol1", "newCol2"): = sąrašas (myfun (colA), colB + colC)] | mit% mutuoti( MyNewCol1 = myfun (colA), MyNewCol2 = colB + colC ) |
Pridėkite stulpelį naudodami dabartines ir ankstesnes kito stulpelio vertes, pvz., Nustatykite skirtumą tarp datos vertės ir ankstesnės datos | Apskaičiuoti | mydt [, dif .: = colA - shift (colA)] | myt <- mutuoti (myt, Diff = colA - lag (colA)) |
Pridėkite stulpelį, nurodydami ankstesnę grupės stulpelio vertę | Apskaičiuoti | mydt2 <- mydt [, dif: = colA - shift (colA), pagal = groupcol] | myt2% group_by (groupcol)%>% mutuoja (Diff = colA - lag (colA)) |
Pridėkite stulpelį su eilutės ID numeriais pagal grupes | Apskaičiuoti | mydt [, myid: = 1:. N, pagal = groupcol] | myt% group_by (groupcol)%>% mutate (myid = row_number ()) |
Pridėkite stulpelį pagal kelias sąlygas nenaudodami kelių if else sakinių (pvz., SQL CASE) | Apskaičiuoti | # Reikia 1,13 ar naujesnės versijos „data.table“ versijos # Man patinka kiekviena sąlyga naujoje eilutėje, bet to nereikia mydt2 <- mydt [, NewCol: = fcase ( condition1, "Value1", condition2, "Value2", 3 sąlyga, „3 vertė“, default = "Other" # viso kito vertė )] | myt2% mutuoti( NewCol = case_when ( condition1 ~ "Value1", condition2 ~ "Value2", condition3 ~ "Value3", TIESA ~ „Kita“ ) ) |
Pridėkite stulpelį veikdami pagal eilutę | Apskaičiuoti | mydt [, newcol: = myfun (colB, colC, colD), pagal = 1: nrow (mydt)] # arba jei „colA“ turi visas unikalias reikšmes mydt [, newcol: = manofun (colB, colC, colD), pagal = colA] | mit% iš eilės ()%>% mutuoti( newcol = myfun (colB, colC, colD) ) # arba mit% iš eilės ()%>% mutuoti( # use dplyr pasirinkite sintaksę: newcol = myfun (c_across (colB: colD)) ) |
Sujunkite du duomenų rinkinius iš daugiau nei vieno stulpelio; laikyti visus set1, bet tik set2 rinkinius | Prisijunkite | mydt <- dt2 [dt1, on = c ("dt2col" = "dt1col")] # ARBA mydt <- sujungti (dt1, dt2, by.x = "dt1col", by.y = "dt2col", visi.x = TIESA) # ARBA setkey (dt1, "dt1col") setkey (dt2, "dt2col") mydt <- dt2 [dt1] | myt <- left_join (df1, df2, = c ("df1col" = "df2col")) |
Sujunkite 2 duomenų rinkinius daugiau nei su vienu stulpeliu - visus laikykite 1 rinkinyje, bet tik 2 rinkinyje | Prisijunkite | mydt <- sujungti (dt1, dt2, by.x = c ("dt1colA", "dt1colB"), by.y = c ("dt2colA", "dt2colB"), visi.x = TIESA, visi.y = NETIESA ) ARBA nustatomasis raktas (dt1, dt1colA, dt1colB) nustatomasis raktas (dt2, dt2colA, dt2colB) mydt <- dt2 [dt1] | myt <- left_join (df1, df2, = c ("df1colA" = "df2colA", "df1colB" = "df2colB")) |
Sujunkite du duomenų rinkinius vienu stulpeliu; laikyti tik degtukus | Prisijunkite | mydt <- sujungti (dt1, dt2, by.x = "dtcol1", by.y = "dtcol2") | myt <- vidinis_ prisijungti (df1, df2, = c ("df1col" = "df2col")) |
Sujunkite du duomenų rinkinius pagal vieną bendrą stulpelį ir saugokite visus duomenis abiejuose rinkiniuose, neatsižvelgiant į tai, ar yra atitikčių | Prisijunkite | mydt <- sujungti (dt1, dt2, by.x = "dtcol1", by.y = "dtcol2", visi = TIESA) | myt <- full_join (df1, df2, = c ("df1col" = "df2col")) |
Sujunkite du duomenų rinkinius pridėdami eilutes iš vienos į kitos apačią | Prisijunkite | mydt_joined <- rbindlist (sąrašas (mydt, mydt2)) | myt_joined <- bind_rows (myt, myt2) |
Duomenis pertvarkykite plačiai ar ilgai | Pertvarkykite | mydt_long <- lydyti (mydt, measure.vars = c ("col1", "col2", "col3"), kintamasis_vardas = "NewCategoryColName", reikšmė.vardas = "NewValueColName") | myt_long <- sukamasis_longer (myt, cols = prasideda_su ("col"), names_to = "NewCategoryColName", reikšmes_to = "NewValueColName") |
Duomenis pertvarkykite ilgai | Pertvarkykite | mydt_wide <- dcast (mydt, id_col1 ~ col1, value.var = "ValueColName") | „myt_wide“ - „pivot_wider“ („myt, names_from = col1“, „value_from“ = „ValueColName“) |
Grandinės kelias išraiškas | Raizgytis | mydt [expr1] [expr2] | mit% 1%>% išraiška2 |
Eksportuoti duomenis į CSV failą | Eksportuoti | fwrite (mydt, „myfile.csv“) | write_csv (myt, "myfile.csv") |
Pridėti eilučių prie esamo CSV failo | Eksportuoti | fwrite (mydt2, "myfile.csv", pridėti = TRUE) | vroom :: vroom_write („myt2“, „myfile.csv“, delim = ",", add = TRUE) |
Eksportuoti duomenis į suglaudintą CSV failą | Eksportuoti | fwrite (mydt, "myfile.csv.gz", compress = "gzip") | vroom :: vroom_write (myt, "myfile2.csv.gz") |
Yra daug daugiau sužinoti apie „data.table“! Norėdami sužinoti kai kuriuos „data.table“ pagrindus, peržiūrėkite mano penkių minučių įvadinį vaizdo įrašą:
Galiausiai „data.table“ svetainėje yra daug daugiau informacijos ir patarimų, pavyzdžiui, naudojant raktas ()
ir kiti indeksavimo patarimai.