Фрейм данных R: как создать, добавить, выбрать и подмножество

Что такое фрейм данных?

A фрейм данных представляет собой список векторов одинаковой длины. Матрица содержит только один тип данных, тогда как фрейм данных принимает разные типы данных (числовые, символьные, факторные и т. д.).

Как создать фрейм данных

Мы можем создать фрейм данных в R передав переменные a,b,c,d в функцию data.frame(). Мы можем R создать фрейм данных, назвать столбцы с помощью name() и просто указать имена переменных.

data.frame(df, stringsAsFactors = TRUE)

аргументы:

  • df: это может быть матрица для преобразования в фрейм данных или набор переменных для объединения.
  • строкиAsFactors: преобразовать строку в фактор по умолчанию

Мы можем создать фрейм данных в 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 с помощью функции name(). Посмотрите пример создания фрейма данных R ниже:

# 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

Также можно выбрать столбцы по их именам. Например, приведенный ниже код извлекает два столбца: идентификатор и хранилище.

# 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