16.1 Slovesa pracující s jednou tabulkou
16.1.1 Výběr řádků (pozorování)
Základní funkcí, která umožňuje výběr řádků je filter()
. Podobně jako většina funkcí z balíku dplyr má extrémně jednoduchou syntax:
filter(.data, ...)
Vstupem funkce je tabulka (.data
) a jeden nebo více logických predikátů. Výstupem funkce je podmnožina řádků, která splňuje všechny zadané predikáty.
Například se můžeme chtít podívat na letadla, která vyrobil Airbus nebo Boeing a mají více než dva motory:
%>%
planes filter(manufacturer %in% c("AIRBUS INDUSTRIE","BOEING"), engines > 2)
## # A tibble: 2 × 9
## tailnum year type manufacturer model engines seats speed engine
## <chr> <int> <chr> <chr> <chr> <int> <int> <int> <chr>
## 1 N281AT NA Fixed wing mu… AIRBUS INDUST… A340-… 4 375 NA Turbo-…
## 2 N670US 1990 Fixed wing mu… BOEING 747-4… 4 450 NA Turbo-…
Vybrány byly pouze řádky splňující všechny podmínky najednou. Následující volání filter()
, které spojuje dvě výše použité podmínky do jedné logickým AND (&
) proto vrátí stejný výsledek:
%>%
planes filter(manufacturer %in% c("AIRBUS INDUSTRIE","BOEING") & engines > 2)
## # A tibble: 2 × 9
## tailnum year type manufacturer model engines seats speed engine
## <chr> <int> <chr> <chr> <chr> <int> <int> <int> <chr>
## 1 N281AT NA Fixed wing mu… AIRBUS INDUST… A340-… 4 375 NA Turbo-…
## 2 N670US 1990 Fixed wing mu… BOEING 747-4… 4 450 NA Turbo-…
Podmínky použité ve funkci filter()
musí po vyhodnocení vracet logické hodnoty TRUE
/FALSE
. Ve filter()
tedy můžeme používat funkce, které vracejí logickou hodnotu.
Například nás mohou zajímat všechna letadla z rodiny A340. Budeme tedy chtít vybrat všechny řádky, u nichž proměnná model
začíná na “A340.” Kromě balíku dplyr budeme potřebovat i stringr:
library(stringr)
%>%
planes filter(str_detect(model,"^A340"))
## # A tibble: 1 × 9
## tailnum year type manufacturer model engines seats speed engine
## <chr> <int> <chr> <chr> <chr> <int> <int> <int> <chr>
## 1 N281AT NA Fixed wing mu… AIRBUS INDUST… A340-… 4 375 NA Turbo-…
Je možné používat i funkce, které nevracejí logické hodnoty. V takové případě je však nutné jejich výsledek na logickou proměnou transformovat. Řekněme, že by nás zajímala letadla, kde na jeden motor připadá méně než 10 sedadel:
%>%
planes filter(seats/engines < 10)
## # A tibble: 39 × 9
## tailnum year type manufacturer model engines seats speed engine
## <chr> <int> <chr> <chr> <chr> <int> <int> <int> <chr>
## 1 N201AA 1959 Fixed wing s… CESSNA 150 1 2 90 Recipro…
## 2 N202AA 1980 Fixed wing m… CESSNA 421C 2 8 90 Recipro…
## 3 N315AT NA Fixed wing s… JOHN G HESS AT-5 1 2 NA 4 Cycle
## 4 N347AA 1985 Rotorcraft SIKORSKY S-76A 2 14 NA Turbo-s…
## 5 N350AA 1980 Fixed wing m… PIPER PA-31-… 2 8 162 Recipro…
## 6 N364AA 1973 Fixed wing m… CESSNA 310Q 2 6 167 Recipro…
## 7 N365AA 2001 Rotorcraft AGUSTA SPA A109E 2 8 NA Turbo-s…
## 8 N376AA 1978 Fixed wing s… PIPER PA-32R… 1 7 NA Recipro…
## 9 N377AA NA Fixed wing s… PAIR MIKE E FALCON… 1 2 NA Recipro…
## 10 N378AA 1963 Fixed wing s… CESSNA 172E 1 4 105 Recipro…
## # … with 29 more rows
Ve speciálních případech je užitečné vybírat řádky ne podle splnění určitých podmínek, ale podle jiných kritérií. Pro tyto případy je v balíku dplyr obsažena funkce slice()
. (Poznámka: zde diskutované funkce slice()
získala s verzí dplyr mnoho nových úloh a rolí. V předchozích verzích umožňovala pouze výběr řádku na základě jeho čísla.)
V základní variantě přijímá slice()
číslo řádku, nebo jejich rozsah, který má být vybrán:
%>%
planes slice(1L)
## # A tibble: 1 × 9
## tailnum year type manufacturer model engines seats speed engine
## <chr> <int> <chr> <chr> <chr> <int> <int> <int> <chr>
## 1 N10156 2004 Fixed wing mul… EMBRAER EMB-14… 2 55 NA Turbo-…
%>%
planes slice(1L:5L)
## # A tibble: 5 × 9
## tailnum year type manufacturer model engines seats speed engine
## <chr> <int> <chr> <chr> <chr> <int> <int> <int> <chr>
## 1 N10156 2004 Fixed wing mu… EMBRAER EMB-1… 2 55 NA Turbo-…
## 2 N102UW 1998 Fixed wing mu… AIRBUS INDUST… A320-… 2 182 NA Turbo-…
## 3 N103US 1999 Fixed wing mu… AIRBUS INDUST… A320-… 2 182 NA Turbo-…
## 4 N104UW 1999 Fixed wing mu… AIRBUS INDUST… A320-… 2 182 NA Turbo-…
## 5 N10575 2002 Fixed wing mu… EMBRAER EMB-1… 2 55 NA Turbo-…
%>%
planes slice(c(1,2:5))
## # A tibble: 5 × 9
## tailnum year type manufacturer model engines seats speed engine
## <chr> <int> <chr> <chr> <chr> <int> <int> <int> <chr>
## 1 N10156 2004 Fixed wing mu… EMBRAER EMB-1… 2 55 NA Turbo-…
## 2 N102UW 1998 Fixed wing mu… AIRBUS INDUST… A320-… 2 182 NA Turbo-…
## 3 N103US 1999 Fixed wing mu… AIRBUS INDUST… A320-… 2 182 NA Turbo-…
## 4 N104UW 1999 Fixed wing mu… AIRBUS INDUST… A320-… 2 182 NA Turbo-…
## 5 N10575 2002 Fixed wing mu… EMBRAER EMB-1… 2 55 NA Turbo-…
Poslední příklad ukazuje, že (a) číslo řádku nemusí být nutně zadáno jako integer (L
) a (b) vstupem může být vektor vytvořený funkcí c()
.
Speciální variantou slice()
jsou varianty slice_head()
, slice_tail()
, slice_min()
a slice_max()
. Ty vrací n
prvních/posledních řádků respektive n
řádků s nejnižší/nejvyzšší hodnotou:
%>%
planes slice_head(n = 5)
## # A tibble: 5 × 9
## tailnum year type manufacturer model engines seats speed engine
## <chr> <int> <chr> <chr> <chr> <int> <int> <int> <chr>
## 1 N10156 2004 Fixed wing mu… EMBRAER EMB-1… 2 55 NA Turbo-…
## 2 N102UW 1998 Fixed wing mu… AIRBUS INDUST… A320-… 2 182 NA Turbo-…
## 3 N103US 1999 Fixed wing mu… AIRBUS INDUST… A320-… 2 182 NA Turbo-…
## 4 N104UW 1999 Fixed wing mu… AIRBUS INDUST… A320-… 2 182 NA Turbo-…
## 5 N10575 2002 Fixed wing mu… EMBRAER EMB-1… 2 55 NA Turbo-…
%>%
planes slice_max(seats, n = 1)
## # A tibble: 1 × 9
## tailnum year type manufacturer model engines seats speed engine
## <chr> <int> <chr> <chr> <chr> <int> <int> <int> <chr>
## 1 N670US 1990 Fixed wing mult… BOEING 747-4… 4 450 NA Turbo-…
Počet řádků nemusí být určen jako absolutní číslo, ale je možné ho specifikovat v parametru prop
jako podíl všech pozorování:
%>%
planes slice_head(prop = 0.001)
## # A tibble: 3 × 9
## tailnum year type manufacturer model engines seats speed engine
## <chr> <int> <chr> <chr> <chr> <int> <int> <int> <chr>
## 1 N10156 2004 Fixed wing mu… EMBRAER EMB-1… 2 55 NA Turbo-…
## 2 N102UW 1998 Fixed wing mu… AIRBUS INDUST… A320-… 2 182 NA Turbo-…
## 3 N103US 1999 Fixed wing mu… AIRBUS INDUST… A320-… 2 182 NA Turbo-…
Toto volání vrátí 0,1 % pozorování ze začátku tabulky.
Poslední speciální variantou slice()
je slice_sample()
, která umožňuje provést náhodný výběr pozorování z tabulky. (V předchozích verzích dplyr
k tomu sloužily funkce sample_*()
.) Počet řádků v náhodném výběru může být stanoveno opět absolutním číslem (parametr n
) nebo podílem (parametr prop
). Funkce umožňuje používat ve výběru váhy (parametr weight_by
) a zvolit výběr s nahrazením (parametr replace
).
16.1.2 Výběr sloupců (proměnných)
Pro výběr sloupců slouží funkce select()
. Syntax je podobná jako v případě filter()
:
select(.data, ...)
Do select()
vstupuje tabulka a identifikace sloupců, které mají být vybrány. Například:
%>%
planes select(tailnum, manufacturer)
## # A tibble: 3,322 × 2
## tailnum manufacturer
## <chr> <chr>
## 1 N10156 EMBRAER
## 2 N102UW AIRBUS INDUSTRIE
## 3 N103US AIRBUS INDUSTRIE
## 4 N104UW AIRBUS INDUSTRIE
## 5 N10575 EMBRAER
## 6 N105UW AIRBUS INDUSTRIE
## 7 N107US AIRBUS INDUSTRIE
## 8 N108UW AIRBUS INDUSTRIE
## 9 N109UW AIRBUS INDUSTRIE
## 10 N110UW AIRBUS INDUSTRIE
## # … with 3,312 more rows
Příklad ukazuje první a základní možnost, jak identifikovat sloupec – a to jeho jménem. select()
však umožňuje specifikovat sloupec i pomocí čísla pozice.
Následující volání funkce select()
tak vrací stejný výsledek, jako tomu byl v případě identifikace sloupců jejich jménem.
%>%
planes select(1,4)
## # A tibble: 3,322 × 2
## tailnum manufacturer
## <chr> <chr>
## 1 N10156 EMBRAER
## 2 N102UW AIRBUS INDUSTRIE
## 3 N103US AIRBUS INDUSTRIE
## 4 N104UW AIRBUS INDUSTRIE
## 5 N10575 EMBRAER
## 6 N105UW AIRBUS INDUSTRIE
## 7 N107US AIRBUS INDUSTRIE
## 8 N108UW AIRBUS INDUSTRIE
## 9 N109UW AIRBUS INDUSTRIE
## 10 N110UW AIRBUS INDUSTRIE
## # … with 3,312 more rows
%>% names planes
## [1] "tailnum" "year" "type" "manufacturer" "model"
## [6] "engines" "seats" "speed" "engine"
16.1.2.1 Funkce select()
a speciální funkce
Při identifikaci sloupců je možné využít speciální funkce. Některé fungují pouze “uvnitř” select()
a některých dalších funkcí z tidyverse.
První taková funkce je :
. Umožňuje specifikovat rozsah sloupců, místo vypisování všech prvků. Všechny následující volání tak vrací stejný výsledek:
%>%
planes select(1,2,3,4,8)
%>%
planes select(tailnum, year, type, manufacturer, speed)
%>%
planes select(1:4, 8)
%>%
planes select(tailnum:manufacturer, speed)
Další speciální funkcí je -
(mínus). Tato funkce umožňuje “negativní” výběr. Při jejím použití není sloupec zahrnut, ale naopak vypuštěn:
%>%
planes select(-tailnum, -year, -type, -manufacturer, -speed)
## # A tibble: 3,322 × 4
## model engines seats engine
## <chr> <int> <int> <chr>
## 1 EMB-145XR 2 55 Turbo-fan
## 2 A320-214 2 182 Turbo-fan
## 3 A320-214 2 182 Turbo-fan
## 4 A320-214 2 182 Turbo-fan
## 5 EMB-145LR 2 55 Turbo-fan
## 6 A320-214 2 182 Turbo-fan
## 7 A320-214 2 182 Turbo-fan
## 8 A320-214 2 182 Turbo-fan
## 9 A320-214 2 182 Turbo-fan
## 10 A320-214 2 182 Turbo-fan
## # … with 3,312 more rows
Speciální funkce je možné kombinovat – je například možné vypustit sloupce identifikované rozsahem (:
):
%>%
planes select(-tailnum:-manufacturer, -speed)
## # A tibble: 3,322 × 4
## model engines seats engine
## <chr> <int> <int> <chr>
## 1 EMB-145XR 2 55 Turbo-fan
## 2 A320-214 2 182 Turbo-fan
## 3 A320-214 2 182 Turbo-fan
## 4 A320-214 2 182 Turbo-fan
## 5 EMB-145LR 2 55 Turbo-fan
## 6 A320-214 2 182 Turbo-fan
## 7 A320-214 2 182 Turbo-fan
## 8 A320-214 2 182 Turbo-fan
## 9 A320-214 2 182 Turbo-fan
## 10 A320-214 2 182 Turbo-fan
## # … with 3,312 more rows
Výsledné tabulky jsou pochopitelně shodné.
Obě tyto speciální funkce vyžadují přesnou specifikaci jména nebo pozice sloupce. V reálném životě občas pracujeme s poněkud vágnějším zadáním. Mohli bychom chtít například vybrat všechny sloupce, které obsahují informace o motorech. Ty jsou v tabulce planes
dva engine
(typ motoru) a engines
(počet motorů).
První možností je samozřejmě možné použít následující volání a vybrat sloupce jejich výčtem:
%>%
planes select(engine,engines)
To však není praktické v případě, že pracujeme s větším množstvím sloupců, jejichž názvy jsou systematické. V tom případě je užitečné sáhnout po select helpers (funkcích pomocníčcích chcete-li). dplyr jich nabízí hned několik:
starts_with()
vybírá sloupce, jejichž jméno začíná na řetězec, který je argumentem funkcestarts_with()
ends_with()
vybírá sloupce, jejichž jméno končí na řetězec, který je argumentem funkceends_with()
contains()
vybírá sloupce, jejichž jméno obsahuje řetězec, který je argumentem funkcecontains()
matches()
vybírá sloupce, jejichž jméno odpovídá zadanému regulárnímu výrazunum_range()
slouží pro výběr sloupců, jejichž jméno je tvořeno kombinací řetězce a čísla – napříkladtrial_1
,trial_2
,…everything()
vrací všechny sloupcelast_col()
vrací poslední sloupec
Pro výběr proměnných se vztahem k motorům lze použít hned tři funkce:
%>%
planes select(starts_with("engine"))
%>%
planes select(contains("engine"))
%>%
planes select(matches("^engine"))
První a třetí varianta vybere všechny sloupce, které začínají na “engine.” Druhé variantě postačí k výběru, že řetězec “engine” se vyskytuje kdekoliv ve jméně sloupce.
Další select helpers umožňují vybrat sloupce podle jmen ze vstupního vektoru.
all_of()
vrátí tabulku s vybranými sloupci pouze tehdy, pokud se ji podaří najít všechna jména obsažená ve vstupním vektoru. V opačném případě vrátí chybu.any_of()
vrátí prostě jenom ty sloupce, které v tabulce najde.
%>%
planes select(all_of("engine")) # Vrátí jeden sloupec
%>%
planes select(all_of(c("engine","Engine"))) # Vrátí chybu
%>%
planes select(any_of(c("engine","Engine"))) # Vrátí jeden sloupec
%>%
planes select(any_of(c("Engine"))) # Nevrátí řádný sloupec.
Select helpers mohou být kombinováni se všemi ostatními způsoby identifikace sloupců:
%>%
planes select(tailnum, starts_with("engine"))
## # A tibble: 3,322 × 3
## tailnum engines engine
## <chr> <int> <chr>
## 1 N10156 2 Turbo-fan
## 2 N102UW 2 Turbo-fan
## 3 N103US 2 Turbo-fan
## 4 N104UW 2 Turbo-fan
## 5 N10575 2 Turbo-fan
## 6 N105UW 2 Turbo-fan
## 7 N107US 2 Turbo-fan
## 8 N108UW 2 Turbo-fan
## 9 N109UW 2 Turbo-fan
## 10 N110UW 2 Turbo-fan
## # … with 3,312 more rows
Posledním select helper je where()
. Tato funkce umožňuje vybrat sloupce s pomocí funkce vracející logickou hdonotu. Je tak možné například vybrat pouze sloupce, které obahují celá čísla:
%>%
planes select(where(is.integer))
## # A tibble: 3,322 × 4
## year engines seats speed
## <int> <int> <int> <int>
## 1 2004 2 55 NA
## 2 1998 2 182 NA
## 3 1999 2 182 NA
## 4 1999 2 182 NA
## 5 2002 2 55 NA
## 6 1999 2 182 NA
## 7 1999 2 182 NA
## 8 1999 2 182 NA
## 9 1999 2 182 NA
## 10 1999 2 182 NA
## # … with 3,312 more rows
Všiměte si, že samotná funkce is.integer
je parametrem where()
a nikoliv její výstup. Je proto nutné do funkce zadat is.integer
a nikoliv is.integer()
.
Funkce where()
je jedna z novinek v dplyr 1.0.0 a společně s dalšími funkcemi nahradila tzv. scoped varianty základních funkcí (select_if()
atp.).
Select helper s velmi specifickým využitím je everything()
, které slouží k vybrání všeho. Nebo lépe všeho ostatního. Pokud z nějakého důvodu chceme změnit pořadí sloupců v tabulce, potom se hodí právě everything()
.
%>%
planes select(engine, engines, everything())
## # A tibble: 3,322 × 9
## engine engines tailnum year type manufacturer model seats speed
## <chr> <int> <chr> <int> <chr> <chr> <chr> <int> <int>
## 1 Turbo-fan 2 N10156 2004 Fixed wing … EMBRAER EMB-1… 55 NA
## 2 Turbo-fan 2 N102UW 1998 Fixed wing … AIRBUS INDUS… A320-… 182 NA
## 3 Turbo-fan 2 N103US 1999 Fixed wing … AIRBUS INDUS… A320-… 182 NA
## 4 Turbo-fan 2 N104UW 1999 Fixed wing … AIRBUS INDUS… A320-… 182 NA
## 5 Turbo-fan 2 N10575 2002 Fixed wing … EMBRAER EMB-1… 55 NA
## 6 Turbo-fan 2 N105UW 1999 Fixed wing … AIRBUS INDUS… A320-… 182 NA
## 7 Turbo-fan 2 N107US 1999 Fixed wing … AIRBUS INDUS… A320-… 182 NA
## 8 Turbo-fan 2 N108UW 1999 Fixed wing … AIRBUS INDUS… A320-… 182 NA
## 9 Turbo-fan 2 N109UW 1999 Fixed wing … AIRBUS INDUS… A320-… 182 NA
## 10 Turbo-fan 2 N110UW 1999 Fixed wing … AIRBUS INDUS… A320-… 182 NA
## # … with 3,312 more rows
Změní pořadí sloupců tak, že na první pozici přesune engine
a engines
a následně do tabulky vyskládá všechny ostatní sloupce. Díky everything()
není nutné jejich jména vypisovat. Do verze 1.0.0 bylo použití select()
prakticky jedinou možností jak změnit pořadí sloupců. O dtéto verze v dplyr existuje specializovaná funkce relocate()
, která také umí pracovat se select helpers.
16.1.2.2 Další speciální funkce
Při práci s výběry, které jsou v podstatě jen logickým vektorem nad jmény sloupců, je možné používat logické operátory !
(negace), |
(OR) a &
(AND):
%>%
planes select(!starts_with("engi")) # Vrátí sloupce, které nezačínají na "engi"
## # A tibble: 3,322 × 7
## tailnum year type manufacturer model seats speed
## <chr> <int> <chr> <chr> <chr> <int> <int>
## 1 N10156 2004 Fixed wing multi engine EMBRAER EMB-145XR 55 NA
## 2 N102UW 1998 Fixed wing multi engine AIRBUS INDUSTRIE A320-214 182 NA
## 3 N103US 1999 Fixed wing multi engine AIRBUS INDUSTRIE A320-214 182 NA
## 4 N104UW 1999 Fixed wing multi engine AIRBUS INDUSTRIE A320-214 182 NA
## 5 N10575 2002 Fixed wing multi engine EMBRAER EMB-145LR 55 NA
## 6 N105UW 1999 Fixed wing multi engine AIRBUS INDUSTRIE A320-214 182 NA
## 7 N107US 1999 Fixed wing multi engine AIRBUS INDUSTRIE A320-214 182 NA
## 8 N108UW 1999 Fixed wing multi engine AIRBUS INDUSTRIE A320-214 182 NA
## 9 N109UW 1999 Fixed wing multi engine AIRBUS INDUSTRIE A320-214 182 NA
## 10 N110UW 1999 Fixed wing multi engine AIRBUS INDUSTRIE A320-214 182 NA
## # … with 3,312 more rows
%>%
planes select(starts_with("e") & ends_with("s")) # Vrátí sloupce začínající na "e" a zároveň končící na "s"
## # A tibble: 3,322 × 1
## engines
## <int>
## 1 2
## 2 2
## 3 2
## 4 2
## 5 2
## 6 2
## 7 2
## 8 2
## 9 2
## 10 2
## # … with 3,312 more rows
%>%
planes select(starts_with("e") | ends_with("s")) # Vrátí sloupce začínající na "e" nebo končící na "s"
## # A tibble: 3,322 × 3
## engines engine seats
## <int> <chr> <int>
## 1 2 Turbo-fan 55
## 2 2 Turbo-fan 182
## 3 2 Turbo-fan 182
## 4 2 Turbo-fan 182
## 5 2 Turbo-fan 55
## 6 2 Turbo-fan 182
## 7 2 Turbo-fan 182
## 8 2 Turbo-fan 182
## 9 2 Turbo-fan 182
## 10 2 Turbo-fan 182
## # … with 3,312 more rows
Podobně je možné výběry kombinovat pomocí funkce c()
:
%>%
planes select(starts_with(c("e","s"))) # Vrátí sloupce začínající na "e" nebo na "s"
## # A tibble: 3,322 × 4
## engines engine seats speed
## <int> <chr> <int> <int>
## 1 2 Turbo-fan 55 NA
## 2 2 Turbo-fan 182 NA
## 3 2 Turbo-fan 182 NA
## 4 2 Turbo-fan 182 NA
## 5 2 Turbo-fan 55 NA
## 6 2 Turbo-fan 182 NA
## 7 2 Turbo-fan 182 NA
## 8 2 Turbo-fan 182 NA
## 9 2 Turbo-fan 182 NA
## 10 2 Turbo-fan 182 NA
## # … with 3,312 more rows
16.1.2.3 Výběr a přejmenování sloupce
Jednou ze speciálních funkcí je i =
. To slouží v select()
pro přejmenování. Například volání
%>%
planes select(tailnum, company = manufacturer)
## # A tibble: 3,322 × 2
## tailnum company
## <chr> <chr>
## 1 N10156 EMBRAER
## 2 N102UW AIRBUS INDUSTRIE
## 3 N103US AIRBUS INDUSTRIE
## 4 N104UW AIRBUS INDUSTRIE
## 5 N10575 EMBRAER
## 6 N105UW AIRBUS INDUSTRIE
## 7 N107US AIRBUS INDUSTRIE
## 8 N108UW AIRBUS INDUSTRIE
## 9 N109UW AIRBUS INDUSTRIE
## 10 N110UW AIRBUS INDUSTRIE
## # … with 3,312 more rows
vybere sloupce tailnum
a manufacturer
. Sloupec manufacturer
však zároveň přejmenuje na company
.
Speciálně pro přejmenovávání sloupců je v dplyr obsažena funkce rename()
(fakticky jde jen o lehkou mutaci select()
). Ta sloupce nevybírá, ale jen přejmenovává. Použití =
je v ní povinné:
%>%
planes rename(tailnum, company = manufacturer)
## Error: All renaming inputs must be named.
Po opravě získáme správný výsledek:
%>%
planes rename(company = manufacturer)
## # A tibble: 3,322 × 9
## tailnum year type company model engines seats speed engine
## <chr> <int> <chr> <chr> <chr> <int> <int> <int> <chr>
## 1 N10156 2004 Fixed wing multi engine EMBRAER EMB-… 2 55 NA Turbo…
## 2 N102UW 1998 Fixed wing multi engine AIRBUS… A320… 2 182 NA Turbo…
## 3 N103US 1999 Fixed wing multi engine AIRBUS… A320… 2 182 NA Turbo…
## 4 N104UW 1999 Fixed wing multi engine AIRBUS… A320… 2 182 NA Turbo…
## 5 N10575 2002 Fixed wing multi engine EMBRAER EMB-… 2 55 NA Turbo…
## 6 N105UW 1999 Fixed wing multi engine AIRBUS… A320… 2 182 NA Turbo…
## 7 N107US 1999 Fixed wing multi engine AIRBUS… A320… 2 182 NA Turbo…
## 8 N108UW 1999 Fixed wing multi engine AIRBUS… A320… 2 182 NA Turbo…
## 9 N109UW 1999 Fixed wing multi engine AIRBUS… A320… 2 182 NA Turbo…
## 10 N110UW 1999 Fixed wing multi engine AIRBUS… A320… 2 182 NA Turbo…
## # … with 3,312 more rows
Tabulka obsahuje všechny sloupce, ale jeden z nich byl přejmenován.