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.

Secționează cadru de date

Î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.

Secționează cadru de date

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