R okvir podataka: Kako stvoriti, dodati, odabrati i podskup
โก Pametni saลพetak
R Data Frame pohranjuje stupce razliฤitih tipova jednake duljine, ลกto ga ฤini standardnom pravokutnom strukturom za analizu. Uglate zagrade reลพu retke i stupce, znak dolara doseลพe stupac, a subset() filtrira prema uvjetu.

ล to je podatkovni okvir?
A podatkovni okvir je popis vektora jednake duljine. Matrica sadrลพi samo jednu vrstu podataka, dok podatkovni okvir prihvaฤa razliฤite tipove podataka (brojฤane, znakovne, faktorske itd.).
Ta definicija smjeลกta podatkovni okvir izmeฤu dva susjeda koje ฤete stalno susretati u R. A. matrica je pravokutan, ali jednog tipa, i a popis je viลกetipski, ali neravan. Okvir podataka posuฤuje jedno svojstvo od svakog.
| Struktura | Vrste stupaca | Duljine elemenata | Tipiฤna upotreba |
|---|---|---|---|
| vektor | Samo jedna vrsta | Jedan slijed | Jedna varijabla |
| Distributori | Samo jedna vrsta | Pravokutan | Numeriฤka algebra |
| Popis | Bilo koja mjeลกavina vrsta | Moลพe se razlikovati po elementu | Proizvoljne naplate |
| Okvir podataka | Bilo koja mjeลกavina vrsta | Svaki stupac je jednake duljine | Tabliฤna analiza |
Buduฤi da je okvir podataka zapravo lista ispod, pristupnici koriลกteni na listama rade i ovdje, zbog ฤega se znak dolara ponovno pojavljuje kasnije u ovom vodiฤu.
Kako stvoriti podatkovni okvir
Moลพemo stvoriti podatkovni okvir u R prosljeฤivanjem varijabli a, b, c i d u funkciju data.frame(). Moลพemo stvoriti okvir podataka i imenovati stupce pomoฤu names(), jednostavnim navoฤenjem imena svake varijable.
data.frame(df, stringsAsFactors = TRUE)
argumenti:
- df: To moลพe biti matrica koja se pretvara u podatkovni okvir ili zbirka varijabli za spajanje
- stringsAsFactors: Kontrolira hoฤe li vektori znakova postati stupci faktora. Tvorniฤka zadana vrijednost bila je TRUE u starijim izdanjima, a FALSE od R 4.0.0, stoga je eksplicitno proslijedite kada je ponaลกanje vaลพno.
Moลพemo stvoriti podatkovni okvir u R-u za naลก prvi skup podataka kombiniranjem ฤetiriju varijabli iste duljine.
# Create a, b, c, d variables a <- c(10,20,30,40) b <- c('book', 'pen', 'textbook', 'pencil_case') c <- c(TRUE,FALSE,TRUE,FALSE) d <- c(2.5, 8, 10, 7) # Join the variables to create a data frame df <- data.frame(a,b,c,d) df
Izlaz:
## a b c d ## 1 10 book TRUE 2.5 ## 2 20 pen FALSE 8.0 ## 3 30 textbook TRUE 10.0 ## 4 40 pencil_case FALSE 7.0
Svaki vektor je postao stupac, a ฤetiri vrijednosti u svakom vektoru postale su ฤetiri retka. Imajte na umu da argumenti nisu bili imenovani, pa je R izveo zaglavlja stupaca iz samih naziva varijabli.
Vidimo da zaglavlja stupaca imaju isti naziv kao i varijable. Naziv stupca u R moลพemo promijeniti pomoฤu funkcije names(). Pogledajte primjer R create dataframe u nastavku:
# Name the data frame names(df) <- c('ID', 'items', 'store', 'price') df
Izlaz:
## ID items store price ## 1 10 book TRUE 2.5 ## 2 20 pen FALSE 8.0 ## 3 30 textbook TRUE 10.0 ## 4 40 pencil_case FALSE 7.0
Dodjeljivanjem names() zamjenjuje se svako zaglavlje odjednom, tako da vektor zamjene mora imati toฤno jedan unos po stupcu. Za preimenovanje jednog stupca umjesto toga, indeksirajte vektor names, kao u names(df)[2] <- 'product'.
# Print the structure
str(df)
Izlaz:
## 'data.frame': 4 obs. of 4 variables: ## $ ID : num 10 20 30 40 ## $ items: Factor w/ 4 levels "book","pen","pencil_case",..: 1 2 4 3 ## $ store: logi TRUE FALSE TRUE FALSE ## $ price: num 2.5 8 10 7
Napomena o verziji. Gornji izlaz je proizveden na R izdanju starijem od 4.0.0, gdje je data.frame() prema zadanim postavkama pretvarao vektore znakova u faktore, zbog ฤega se items prikazuje kao Faktor s ฤetiri razine. Osnovna R dokumentacija biljeลพi da je ova tvorniฤki zadana postavka promijenjeno u stringsAsFactors = FALSE za R 4.0.0Pokretanje istog koda na trenutnoj verziji ostavlja stavke kao obiฤan stupac znakova, a str() umjesto toga ispisuje chr. Dodajte stringsAsFactors = TRUE pozivu data.frame() za reprodukciju ispisanog izlaza ili proฤitajte faktor tutorijal za kada su faktori zapravo ลพeljeni.
Slice Data Frame
Nakon ลกto je okvir izgraฤen, sljedeฤi zadatak je izvlaฤenje njegovih dijelova. Rezanje je osnovni R naฤin za to, a koristi iste uglate zagrade kao i vektori, samo s dvije pozicije umjesto jedne.
Moguฤe je izvrลกiti SLICE vrijednosti okvira podataka. Redove i stupce za vraฤanje odabiremo unutar zagrada ispred naziva okvira podataka.
Podatkovni okvir sastoji se od redaka i stupaca, df[A, B]. A predstavlja retke, a B stupce. Moลพemo rezati tako da navedemo retke i/ili stupce.
Na slici 1 ispod, lijevi dio predstavlja redovi, a desni dio je stupovi. Imajte na umu da simbol : znaฤi do. Na primjer, 1:3 namjerava odabrati vrijednosti od 1 do 3.
Na donjem dijagramu prikazujemo kako pristupiti razliฤitim odabirima okvira podataka:
- ลฝuta strelica odabire red 1 u kolona 2
- Zelena strelica odabire redaka 1 2 se
- Crvena strelica odabire kolona 1
- Plava strelica odabire redaka 1 do 3 i stupovi 3 4 se
Imajte na umu da, ako ostavimo lijevi dio prazan, R ฤe odabrati svi redovi. Analogno tome, ako pustimo desni dio prazan, R ฤe odabrati sve kolone.
Moลพemo pokrenuti kod u konzoli:
## Select row 1 in column 2
df[1,2]
Izlaz:
## [1] book ## Levels: book pen pencil_case textbook
Redak Levels se pojavljuje jer je items faktor u ovoj sesiji. Na R 4.0.0 i novijim verzijama isti poziv ispisuje jedan niz znakova "book" bez retka Levels.
## Select Rows 1 to 2
df[1:2,]
Izlaz:
## ID items store price ## 1 10 book TRUE 2.5 ## 2 20 pen FALSE 8.0
## Select Columns 1
df[,1]
Izlaz:
## [1] 10 20 30 40
Odabirom jednog stupca s df[,1] uklanja se omotaฤ okvira i vraฤa se obiฤan vektor. Dodajte drop = FALSE, kao u df[, 1, drop = FALSE], kada je umjesto toga potreban okvir podataka s jednim stupcem.
## Select Rows 1 to 3 and columns 3 to 4
df[1:3, 3:4]
Izlaz:
## store price ## 1 TRUE 2.5 ## 2 FALSE 8.0 ## 3 TRUE 10.0
Takoฤer je moguฤe odabrati stupce s njihovim nazivima. Na primjer, kod u nastavku, npr.tracts dva stupca: ID i pohrana.
# Slice with columns name df[, c('ID', 'store')]
Izlaz:
## ID store ## 1 10 TRUE ## 2 20 FALSE ## 3 30 TRUE ## 4 40 FALSE
Imena su sigurnija od pozicija u produkcijskom kodu, jer umetanje ili promjena redoslijeda stupca tiho mijenja na ลกto se df[, 3] odnosi dok df[, 'store'] nastavlja pokazivati โโna iste podatke.
Dodavanje stupca u okvir podataka
Takoฤer moลพete dodati stupac u okvir podataka. Morate koristiti simbol $ za imenovanje nove varijable i dodavanje stupca u okvir podataka u R-u.
# Create a new vector quantity <- c(10, 35, 40, 5) # Add `quantity` to the `df` data frame df$quantity <- quantity df
Izlaz:
## ID items store price quantity ## 1 10 book TRUE 2.5 10 ## 2 20 pen FALSE 8.0 35 ## 3 30 textbook TRUE 10.0 40 ## 4 40 pencil_case FALSE 7.0 5
Napomena: Broj elemenata u vektoru mora biti jednak broju elemenata u podatkovnom okviru. Izvrลกavanje sljedeฤe naredbe za dodavanje stupca podatkovnom okviru u R-u
quantity <- c(10, 35, 40)
# Add `quantity` to the `df` data frame
df$quantity <- quantity
Daje greลกku:
Error in `lt;-.data.frame`(`*tmp*`, quantity, value = c(10, 35, 40))
replacement has 3 rows, data has 4
Poruka imenuje operator zamjene za podatkovne okvire i navodi oba broja, tako da vam toฤno govori ลกto treba popraviti. R reciklira zamjenu samo kada je njezina duljina jednakomjerno podijelila broj redaka, zbog ฤega se prihvaฤa vrijednost duljine 1, kao ลกto je df$currency <- 'EUR', dok se vektor duljine 3 za ฤetiri retka odbija. cbind() dodaje stupac na isti naฤin, a rbind() je njegov pandan za dodavanje redaka.
Odaberite stupac podatkovnog okvira
Ponekad trebamo pohraniti stupac podatkovnog okvira za buduฤu upotrebu ili izvrลกiti operaciju na stupcu. Moลพemo koristiti znak $ za odabir stupca iz podatkovnog okvira.
# Select the column ID
df$ID
Izlaz:
## [1] 1 2 3 4
Paลพljivo proฤitajte taj izlaz. ID je izgraฤen iz vektora c(10, 20, 30, 40), pa konzola ovdje ispisuje 10 20 30 40; prikazani 1 2 3 4 gore su pozicije redaka, a ne pohranjene vrijednosti. [1] na poฤetku retka je jednostavno indeks prvog elementa u tom retku, a ne dio podataka.
Tri rute doseลพu isti stupac: df$ID, df[['ID']] i df[, 'ID']. Znak dolara provodi djelomiฤno podudaranje, pa bi df$I i dalje pronaลกao ID, ลกto je praktiฤno u konzoli, a riziฤno u spremljenom skriptu.
Podskup podatkovnog okvira
U prethodnom odjeljku odabrali smo cijeli stupac bez uvjeta. Moguฤe je da se podset na temelju toga je li odreฤeni uvjet bio istinit ili nije.
Koristimo funkciju subset().
subset(x, condition) arguments: - x: data frame used to perform the subset - condition: define the conditional statement
ลฝelimo vratiti samo artikle ฤija je cijena iznad 5, tako da moลพemo uฤiniti sljedeฤe:
# Select price above 5
subset(df, subset = price > 5)
Izlaz:
ID items store price 2 20 pen FALSE 8 3 30 textbook TRUE 10 4 40 pencil_case FALSE 7
Oznake redaka 2, 3 i 4 su izvorna imena redaka prenesena iz df-a, ลกto je naฤin na koji moลพete prepoznati da je prvi redak filtriran. subset() takoฤer prihvaฤa argument select za istovremeni odabir stupaca, a ekvivalentni oblik zagrade je df[df$price > 5, ]. Oblik zagrade zadrลพava NA retke gdje uvjet nedostaje, dok subset() ih odbacuje, tako da ta dva nisu uvijek zamjenjiva.

![Sintaksa rezanja R okvira podataka df[A, B] s retcima lijevo od zareza i stupcima desno](https://www.guru99.com/images/r_programming/032918_1452_RDataFrames1.png)
