R Data Frame: Как да създадете, добавите, изберете и подмножество
Какво е Data Frame?
A рамка с данни е списък от вектори, които са с еднаква дължина. Матрицата съдържа само един тип данни, докато рамката с данни приема различни типове данни (числови, символни, факторни и т.н.).
Как да създадете рамка с данни
Можем да създадем рамка с данни в R чрез предаване на променливата a,b,c,d във функцията data.frame(). Можем R да създадем рамка с данни и да именуваме колоните с name() и просто да посочим името на променливите.
data.frame(df, stringsAsFactors = TRUE)
Аргументи:
- df: Може да бъде матрица, която да се преобразува като рамка от данни, или колекция от променливи, които да се съединят
- stringsAsFactors: Преобразувайте низ във фактор по подразбиране
Можем да създадем рамка от данни в R за нашия първи набор от данни, като комбинираме четири променливи с еднаква дължина.
# 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
Изход:
## 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
Виждаме, че заглавките на колоните имат същото име като променливите. Можем да променим името на колоната в R с функцията names(). Проверете примера за R create dataframe по-долу:
# Name the data frame names(df) <- c('ID', 'items', 'store', 'price') df
Изход:
## 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)
Изход:
## '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
По подразбиране рамката с данни връща низови променливи като фактор.
Рамка с данни за срез
Възможно е да се нарязват стойности на рамка с данни. Избираме редовете и колоните, които да се върнат в скоби, предшествани от името на рамката с данни.
Рамката с данни е съставена от редове и колони, df[A, B]. A представлява редовете, а B - колоните. Можем да нарязваме или чрез указване на редовете и/или колоните.
От снимка 1 лявата част представлява редове, а дясната част е колони. Имайте предвид, че символът : означава да се. Например 1:3 има за цел да избере стойности от 1 да се 3.
В диаграмата по-долу показваме как да получите достъп до различен избор на рамката с данни:
- Жълтата стрелка избира ред 1 в колона 2
- Зелената стрелка избира редове 1 да 2
- Червената стрелка избира колона 1
- Синята стрелка избира редове 1 до 3 и колони 3 да 4
Имайте предвид, че ако оставим лявата част празна, R ще избере всички редове. По аналогия, ако оставим дясната част празна, R ще избере всички колони.
Можем да изпълним кода в конзолата:
## Select row 1 in column 2 df[1,2]
Изход:
## [1] book ## Levels: book pen pencil_case textbook
## Select Rows 1 to 2 df[1:2,]
Изход:
## ID items store price ## 1 10 book TRUE 2.5 ## 2 20 pen FALSE 8.0
## Select Columns 1 df[,1]
Изход:
## [1] 10 20 30 40
## Select Rows 1 to 3 and columns 3 to 4 df[1:3, 3:4]
Изход:
## store price ## 1 TRUE 2.5 ## 2 FALSE 8.0 ## 3 TRUE 10.0
Също така е възможно да изберете колоните с техните имена. Например кодът по-долу извлича две колони: ID и store.
# Slice with columns name df[, c('ID', 'store')]
Изход:
## ID store ## 1 10 TRUE ## 2 20 FALSE ## 3 30 TRUE ## 4 40 FALSE
Добавяне на колона към рамка с данни
Можете също да добавите колона към рамка с данни. Трябва да използвате символа $, за да добавите променлива R на кадъра с данни и да добавите колона към кадър с данни в R.
# Create a new vector quantity <- c(10, 35, 40, 5) # Add `quantity` to the `df` data frame df$quantity <- quantity df
Изход:
## 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
Забележка: Броят на елементите във вектора трябва да бъде равен на броя на елементите в рамката с данни. Изпълнение на следния оператор за добавяне на колона към рамка с данни R
quantity <- c(10, 35, 40) # Add `quantity` to the `df` data frame df$quantity <- quantity
Дава грешка:
Error in ` lt;-.data.frame`(`*tmp*`, quantity, value = c(10, 35, 40)) replacement has 3 rows, data has 4
Изберете колона от рамка с данни
Понякога трябва да съхраним колона от рамка с данни за бъдеща употреба или да извършим операция върху колона. Можем да използваме знака $, за да изберем колоната от рамка с данни.
# Select the column ID df$ID
Изход:
## [1] 1 2 3 4
Поднабор на рамка с данни
В предишния раздел избрахме цяла колона без условие. Възможно е да подмножество въз основа на това дали определено условие е вярно или не.
Използваме функцията subset().
subset(x, condition) arguments: - x: data frame used to perform the subset - condition: define the conditional statement
Искаме да върнем само артикулите с цена над 10, можем да направим:
# Select price above 5 subset(df, subset = price > 5)
Изход:
ID items store price 2 20 pen FALSE 8 3 30 textbook TRUE 10 4 40 pencil_case FALSE 7