R Data Frame: Cum se creează, se adaugă, se selectează și se subsetează
Ce este un cadru de date?
A cadru de date este o listă de vectori de lungime egală. O matrice conține un singur tip de date, în timp ce un cadru de date acceptă diferite tipuri de date (numerice, caractere, factori etc.).
Cum se creează un cadru de date
Putem crea un cadru de date în R prin trecerea variabilei a,b,c,d în funcția data.frame(). Putem crea un cadru de date și denumim coloanele cu name() și pur și simplu să specificăm numele variabilelor.
data.frame(df, stringsAsFactors = TRUE)
Argumente:
- df: Poate fi o matrice de convertit ca un cadru de date sau o colecție de variabile de alăturat
- stringsAsFactors: convertiți șirul în factor în mod implicit
Putem crea un cadru de date în R pentru primul nostru set de date combinând patru variabile de aceeași lungime.
# 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
ieșire:
## 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
Putem vedea că anteturile coloanei au același nume ca și variabilele. Putem schimba numele coloanei în R cu funcția names(). Verificați exemplul R create dataframe de mai jos:
# Name the data frame names(df) <- c('ID', 'items', 'store', 'price') df
ieșire:
## 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
# Print the structure str(df)
ieșire:
## '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
În mod implicit, cadrul de date returnează variabile șir ca factor.
Secționează cadru de date
Este posibil să tăiați valorile unui cadru de date. Selectăm rândurile și coloanele de revenit în paranteză precedate de numele cadrului de date.
Un cadru de date este compus din rânduri și coloane, df[A, B]. A reprezintă rândurile și B coloanele. Putem tăia fie prin specificarea rândurilor și/sau coloanelor.
Din imaginea 1, partea din stânga reprezintă rânduri, iar partea dreaptă este coloane. Rețineți că simbolul : înseamnă la. De exemplu, 1:3 intenționează să selecteze valori din 1 la 3.
În diagrama de mai jos arătăm cum să accesăm diferite selecții ale cadrului de date:
- Săgeata galbenă selectează rând 1 în coloană 2
- Săgeata verde selectează rânduri 1 la 2
- Săgeata roșie selectează coloană 1
- Săgeata albastră selectează rânduri 1 până în 3 și coloane 3 la 4
Rețineți că, dacă lăsăm partea stângă goală, R va selecta toate rândurile. Prin analogie, dacă lăsăm partea dreaptă goală, R va selecta toate coloanele.
Putem rula codul în consolă:
## Select row 1 in column 2 df[1,2]
ieșire:
## [1] book ## Levels: book pen pencil_case textbook
## Select Rows 1 to 2 df[1:2,]
ieșire:
## ID items store price ## 1 10 book TRUE 2.5 ## 2 20 pen FALSE 8.0
## Select Columns 1 df[,1]
ieșire:
## [1] 10 20 30 40
## Select Rows 1 to 3 and columns 3 to 4 df[1:3, 3:4]
ieșire:
## store price ## 1 TRUE 2.5 ## 2 FALSE 8.0 ## 3 TRUE 10.0
De asemenea, este posibil să selectați coloanele cu numele lor. De exemplu, codul de mai jos extrage două coloane: ID și magazin.
# Slice with columns name df[, c('ID', 'store')]
ieșire:
## ID store ## 1 10 TRUE ## 2 20 FALSE ## 3 30 TRUE ## 4 40 FALSE
Adăugați o coloană la cadrul de date
De asemenea, puteți adăuga o coloană la un cadru de date. Trebuie să utilizați simbolul $ pentru a adăuga variabila R a cadrului de date și a adăuga o coloană la un cadru de date în R.
# Create a new vector quantity <- c(10, 35, 40, 5) # Add `quantity` to the `df` data frame df$quantity <- quantity df
ieșire:
## 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
Notă: numărul de elemente din vector trebuie să fie egal cu numărul de elemente din cadrul de date. Executarea următoarei instrucțiuni pentru a adăuga o coloană la cadrul de date R
quantity <- c(10, 35, 40) # Add `quantity` to the `df` data frame df$quantity <- quantity
Dă eroare:
Error in ` lt;-.data.frame`(`*tmp*`, quantity, value = c(10, 35, 40)) replacement has 3 rows, data has 4
Selectați o coloană a unui cadru de date
Uneori, trebuie să stocăm o coloană dintr-un cadru de date pentru utilizare ulterioară sau să efectuăm operații pe o coloană. Putem folosi semnul $ pentru a selecta coloana dintr-un cadru de date.
# Select the column ID df$ID
ieșire:
## [1] 1 2 3 4
Subset un cadru de date
În secțiunea anterioară, am selectat o întreagă coloană fără condiție. Este posibil să submult pe baza faptului că o anumită condiție era sau nu adevărată.
Folosim funcția subset().
subset(x, condition) arguments: - x: data frame used to perform the subset - condition: define the conditional statement
Dorim să returnăm doar articolele cu preț peste 10, putem face:
# Select price above 5 subset(df, subset = price > 5)
ieșire:
ID items store price 2 20 pen FALSE 8 3 30 textbook TRUE 10 4 40 pencil_case FALSE 7