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