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