R adatkeret: Létrehozás, hozzáfűzés, kijelölés és részhalmaz

Mi az adatkeret?

A adatkeret egyenlő hosszúságú vektorok listája. Egy mátrix csak egy típusú adatot tartalmaz, míg egy adatkeret különböző adattípusokat (numerikus, karakteres, faktoros stb.) fogad el.

Hogyan hozzunk létre adatkeretet

Létrehozhatunk egy adatkeretet R az a,b,c,d változó átadásával a data.frame() függvénybe. Létrehozhatunk adatkeretet, és elnevezhetjük az oszlopokat name()-vel, és egyszerűen megadhatjuk a változók nevét.

data.frame(df, stringsAsFactors = TRUE)

érvek:

  • df: Ez lehet egy adatkeretként konvertálandó mátrix, vagy az összekapcsolandó változók gyűjteménye
  • stringsAsFactors: A karakterlánc átalakítása faktorrá alapértelmezés szerint

Négy azonos hosszúságú változó kombinálásával létrehozhatunk egy adatkeretet R-ben az első adathalmazunkhoz.

# 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

output:

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

Láthatjuk, hogy az oszlopfejlécek neve megegyezik a változókéval. Az oszlop nevét az R-ben a names() függvényekkel módosíthatjuk. Nézze meg az R létrehozási adatkeret példáját alább:

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

output:

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

output:

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

Alapértelmezés szerint az adatkeret karakterlánc-változókat ad vissza tényezőként.

Adatkeret szeletelése

Lehetőség van egy adatkeret értékeinek SLICE-ra. Kijelöljük a zárójelbe visszatérni kívánt sorokat és oszlopokat az adatkeret nevével.

Egy adatkeret sorokból és oszlopokból áll, df[A, B]. A a sorokat, B pedig az oszlopokat jelöli. A sorok és/vagy oszlopok megadásával szeletelhetünk is.

Az 1. képen a bal oldali rész a sorok, a jobb oldali rész pedig a oszlopok. Vegye figyelembe, hogy a : szimbólum azt jelenti nak nek. Például az 1:3 az 1-ből kíván értékeket kiválasztani nak nek 3.

Adatkeret szeletelése

Az alábbi ábrán bemutatjuk, hogyan lehet hozzáférni az adatkeret különböző választékához:

  • A sárga nyíl kiválasztja a sor 1 in oszlop 2
  • A zöld nyíl kiválasztja a sorok 1 a 2
  • A piros nyíl kiválasztja a oszlop 1
  • A kék nyíl kiválasztja a sorok 1 és 3 és oszlopok 3 a 4

Megjegyzendő, hogy ha a bal oldali részt üresen hagyjuk, R kiválasztja az összes sor. Hasonlóan, ha a jobb oldali részt üresen hagyjuk, R kiválasztja az összes oszlopot.

Adatkeret szeletelése

A kódot a konzolban futtathatjuk:

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

output:

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

output:

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

output:

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

output:

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

Lehetőség van az oszlopok nevükkel való kijelölésére is. Például az alábbi kód két oszlopot von ki: ID és store.

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

output:

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

Oszlop hozzáfűzése az adatkerethez

Az adatkerethez oszlopot is hozzáfűzhet. A $ szimbólumot kell használnia az R adatkeret változó hozzáfűzéséhez, és egy oszlop hozzáadásához az R adatkeretéhez.

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

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

output:

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

Megjegyzés: A vektor elemeinek számának meg kell egyeznie az adatkeret elemeinek számával. A következő utasítás végrehajtása oszlop hozzáadásához az R adatkerethez

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

Hibát ad:

Error in `

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

Válassza ki az adatkeret oszlopát

Néha el kell tárolnunk egy adatkeret oszlopát későbbi használatra, vagy műveletet kell végrehajtanunk egy oszlopon. A $ jellel kijelölhetjük az oszlopot egy adatkeretből.

# Select the column ID
df$ID

output:

## [1] 1 2 3 4

Adatkeret részhalmaza

Az előző részben egy teljes oszlopot jelöltünk ki feltétel nélkül. Lehetséges részhalmaza az alapján, hogy egy bizonyos feltétel igaz-e vagy sem.

A subset() függvényt használjuk.

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

Csak a 10 feletti árat szeretnénk visszaküldeni, ezt megtehetjük:

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

output:

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