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