R 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