R Andmeraam: kuidas luua, lisada, valida ja alamhulka

Mis on andmeraam?

A andmeraam on võrdse pikkusega vektorite loend. Maatriks sisaldab ainult ühte tüüpi andmeid, samas kui andmeraam aktsepteerib erinevaid andmetüüpe (numbriline, märk, tegur jne).

Kuidas luua andmeraami

Saame luua andmeraami R edastades muutuja a,b,c,d funktsiooni data.frame(). Saame R luua andmeraami ja anda veergudele nimed nimega name() ja lihtsalt määrata muutujate nimed.

data.frame(df, stringsAsFactors = TRUE)

Argumendid:

  • df: see võib olla andmeraamiks teisendatav maatriks või ühendatavate muutujate kogu
  • stringsAsFactors: teisendab stringi vaikimisi faktoriks

Saame luua R-s andmeraami oma esimese andmekogumi jaoks, kombineerides nelja sama pikkusega muutujat.

# 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

Väljund:

##     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

Näeme, et veerupäistel on muutujatega sama nimi. Saame muuta veeru nime R-is funktsiooniga names (). Kontrollige allolevat R-i andmeraami loomise näidet:

# Name the data frame
names(df) <- c('ID', 'items', 'store', 'price')
df

Väljund:

##   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)

Väljund:

## '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

Vaikimisi tagastab andmeraam tegurina stringi muutujad.

Lõika andmeraam

Andmeraami väärtusi on võimalik SLICE. Valime read ja veerud, mis naasevad sulgudesse, millele eelneb andmeraami nimi.

Andmeraam koosneb ridadest ja veergudest, df[A, B]. A tähistab ridu ja B veerge. Tükeldada saame ridade ja/või veergude määramise teel.

Pildilt 1 kujutab vasak osa read, ja parem osa on veerud. Pange tähele, et sümbol : tähendab et. Näiteks 1:3 eesmärk on valida väärtused 1 hulgast et 3.

Lõika andmeraam

Alloleval diagrammil näeme, kuidas pääseda juurde andmeraami erinevatele valikutele:

  • Kollane nool valib rida 1 sisse veerg 2
  • Roheline nool valib rida 1 et 2
  • Punane nool valib veerg 1
  • Sinine nool valib rida 1 kuni 3 ja veerud 3 et 4

Pange tähele, et kui jätame vasakpoolse osa tühjaks, valib R kõik read. Analoogiliselt, kui jätame parema osa tühjaks, valib R kõik veerud.

Lõika andmeraam

Koodi saame konsoolis käivitada:

## Select row 1 in column 2
df[1,2]

Väljund:

## [1] book
## Levels: book pen pencil_case textbook
## Select Rows 1 to 2
df[1:2,]

Väljund:

##   ID items store price
## 1 10  book  TRUE   2.5
## 2 20   pen FALSE   8.0
## Select Columns 1
df[,1]

Väljund:

## [1] 10 20 30 40
## Select Rows 1 to 3 and columns 3 to 4
df[1:3, 3:4]

Väljund:

##   store price
## 1  TRUE   2.5
## 2 FALSE   8.0
## 3  TRUE  10.0

Samuti on võimalik valida veerge nende nimedega. Näiteks allolev kood eraldab kaks veergu: ID ja pood.

# Slice with columns name
df[, c('ID', 'store')]

Väljund:

##   ID store
## 1 10  TRUE
## 2 20 FALSE
## 3 30  TRUE
## 4 40 FALSE

Lisage andmeraamile veerg

Samuti saate andmeraamile veeru lisada. Peate kasutama sümbolit $, et lisada andmeraami R muutuja ja lisada veerg andmeraamile R-is.

# Create a new vector
quantity <- c(10, 35, 40, 5)

# Add `quantity` to the `df` data frame
df$quantity <- quantity
df

Väljund:

##   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

Märkus. Vektori elementide arv peab olema võrdne andmeraami elementide arvuga. Järgmise avalduse täitmine andmeraamile R veeru lisamiseks

quantity <- c(10, 35, 40)
# Add `quantity` to the `df` data frame
df$quantity <- quantity

Annab vea:

Error in `

lt;-.data.frame`(`*tmp*`, quantity, value = c(10, 35, 40))
 replacement has 3 rows, data has 4

Valige andmeraami veerg

Mõnikord peame salvestama andmeraami veeru edaspidiseks kasutamiseks või tegema veeruga toiminguid. Andmeraamist veeru valimiseks saame kasutada märki $.

# Select the column ID
df$ID

Väljund:

## [1] 1 2 3 4

Andmeraami alamkomplekt

Eelmises jaotises valisime terve veeru ilma tingimusteta. On võimalik alamhulk selle põhjal, kas teatud tingimus oli tõsi või mitte.

Kasutame funktsiooni subset().

subset(x, condition)
arguments:
- x: data frame used to perform the subset
- condition: define the conditional statement

Soovime tagastada ainult need kaubad, mille hind on üle 10, saame teha:

# Select price above 5
subset(df, subset = price > 5)

Väljund:

ID       items store price
2 20         pen FALSE     8
3 30    textbook  TRUE    10
4 40 pencil_case FALSE     7