Як створити DataFrame у R, щоб упорядковано зберігати дані

| | 0 Comments| 6:05 AM
Categories:

DataFrames — це базова структура даних у R, яка пропонує структуру, універсальність і інструменти, необхідні для аналізу та обробки даних. Їх важливість поширюється на різні сфери, включаючи статистику, науку про дані та прийняття рішень на основі даних у різних галузях.

DataFrames забезпечують структуру й організацію, необхідні для розблокування розуміння та прийняття керованих даними рішень систематичним і ефективним способом.

DataFrames у R структуровано як таблиці з рядками та стовпцями. Кожен рядок представляє спостереження, а кожен стовпець представляє змінну. Така структура полегшує організацію та роботу з даними. DataFrames можуть зберігати різні типи даних, включаючи числа, текст і дати, що робить їх універсальними.

У цій статті я поясню важливість фреймів даних і обговорю їх створення за допомогою функції data.frame().

Крім того, ми дослідимо методи маніпулювання даними та розглянемо, як створювати файли CSV і Excel, перетворювати інші структури даних у кадри даних і використовувати бібліотеку tibble.

Ось кілька основних причин, чому DataFrames є вирішальними в R:

Важливість DataFrames

  • Зберігання структурованих даних: DataFrames забезпечують структурований та табличний спосіб зберігання даних, схожий на електронну таблицю. Цей структурований формат спрощує керування та організацію даних.
  • Змішані типи даних: DataFrames можуть вміщувати різні типи даних в одній структурі. Ви можете мати стовпці з числовими значеннями, рядками символів, факторами, датами тощо. Ця універсальність є важливою при роботі з реальними даними.
  • Організація даних: кожен стовпець у DataFrame представляє змінну, тоді як кожен рядок представляє спостереження або випадок. Цей структурований макет полегшує розуміння організації даних, покращуючи чіткість даних.
  • Імпорт і експорт даних: DataFrames підтримують простий імпорт і експорт даних із різних форматів файлів, як-от CSV, Excel і баз даних. Ця функція оптимізує процес роботи із зовнішніми джерелами даних.
  • Взаємодія: DataFrames широко підтримуються пакетами та функціями R, забезпечуючи сумісність з іншими статистичними інструментами та інструментами аналізу даних і бібліотеками. Ця сумісність забезпечує бездоганну інтеграцію в екосистему R.
  • Маніпулювання даними: R пропонує багату екосистему пакетів, яскравим прикладом якого є «dplyr». Ці пакети спрощують фільтрацію, трансформацію та узагальнення даних за допомогою DataFrames. Ця можливість має вирішальне значення для очищення та підготовки даних.
  • Статистичний аналіз: DataFrames — це стандартний формат даних для багатьох статистичних функцій і функцій аналізу даних у R. За допомогою DataFrames можна ефективно виконувати регресію, перевірку гіпотез та багато іншого статистичного аналізу.
  • Візуалізація: пакети візуалізації даних R, такі як ggplot2, бездоганно працюють із DataFrames. Це спрощує створення інформативних діаграм і графіків для дослідження даних і передачі даних.
  • Дослідження даних: DataFrames полегшують дослідження даних за допомогою підсумкової статистики, візуалізації та інших аналітичних методів. Це допомагає аналітикам і дослідникам даних зрозуміти характеристики даних і виявити закономірності або викиди.

Як створити DataFrame у R

Є кілька способів створити DataFrame у R. Ось деякі з найпоширеніших методів:

#1. Використання функції data.frame().

# Load the necessary library if not already loaded
if (!require("dplyr")) {
  install.packages("dplyr")
  library(dplyr)
}

# install.packages("dplyr")
library(dplyr)

# Set a seed for reproducibility
set.seed(42)

# Create a sample sales DataFrame with real product names
sales_data <- data.frame(
  OrderID = 1001:1010,
  Product = c("Laptop", "Smartphone", "Tablet", "Headphones", "Camera", "TV", "Printer", "Washing Machine", "Refrigerator", "Microwave Oven"),
  Quantity = sample(1:10, 10, replace = TRUE),
  Price = round(runif(10, 100, 2000), 2),
  Discount = round(runif(10, 0, 0.3), 2),
  Date = sample(seq(as.Date('2023-01-01'), as.Date('2023-01-10'), by="days"), 10)
)

# Display the sales DataFrame
print(sales_data)

Давайте розберемося, що буде робити наш код:

  • Спочатку перевіряється, чи доступна бібліотека «dplyr» у середовищі R.
  • Якщо «dplyr» недоступний, він інсталює та завантажує бібліотеку.
  • Потім він встановлює випадкове початкове число для відтворюваності.
  • Далі створюється зразок Sales DataFrame із заповненими даними.
  • Нарешті, він відображає Sales DataFrame у консолі для перегляду.
  • Sales_dataframe

    Це один із найпростіших способів створити DataFrame у R. Ми також розглянемо, як видобувати, додавати, видаляти та вибирати певні стовпці чи рядки, а також як узагальнювати дані.

      Як використовувати календар і планування подій у Outlook 365 для Mac

    Видобути стовпці

    Є два способи витягти необхідні стовпці з нашого фрейму даних:

    • Щоб отримати останні три стовпці DataFrame в R, ви можете використовувати індексування.
    • Ви можете витягти стовпці з DataFrame за допомогою оператора $, якщо ви хочете отримати доступ до окремих стовпців за назвою.

    Ми побачимо обидва разом, щоб заощадити час:

    # Extract the last three columns (Discount, Price, and Date) from the sales_data DataFrame
    last_three_columns <- sales_data[, c("Discount", "Price", "Date")]
    
    # Display the extracted columns
    print(last_three_columns)
    
    ############################################# OR #########################################################
    
    # Extract the last three columns (Discount, Price, and Date) using the $ operator
    discount_column <- sales_data$Discount
    price_column <- sales_data$Price
    date_column <- sales_data$Date
    
    # Create a new DataFrame with the extracted columns
    last_three_columns <- data.frame(Discount = discount_column, Price = price_column, Date = date_column)
    
    # Display the extracted columns
    print(last_three_columns)
    
    

    Ви можете витягнути необхідні стовпці за допомогою будь-якого з цих кодів.

    Ви можете витягувати рядки з DataFrame в R різними методами. Ось простий спосіб зробити це:

    # Extract specific rows (rows 3, 6, and 9) from the last_three_columns DataFrame
    selected_rows <- last_three_columns[c(3, 6, 9), ]
    
    # Display the selected rows
    print(selected_rows)
    

    Ви також можете використовувати вказані умови:

    # Extract and arrange rows that meet the specified conditions
    selected_rows <- sales_data %>%
      filter(Discount < 0.3, Price > 100, format(Date, "%Y-%m") == "2023-01") %>%
      arrange(OrderID) %>%
      select(Discount, Price, Date)
    
    # Display the selected rows
    print(selected_rows)

    Витягнуті рядки

    Додати новий рядок

    Щоб додати новий рядок до існуючого DataFrame в R, ви можете скористатися функцією rbind():

    # Create a new row as a data frame
    new_row <- data.frame(
      OrderID = 1011,
      Product = "Coffee Maker",
      Quantity = 2,
      Price = 75.99,
      Discount = 0.1,
      Date = as.Date("2023-01-12")
    )
    
    # Use the rbind() function to add the new row to the DataFrame
    sales_data <- rbind(sales_data, new_row)
    
    # Display the updated DataFrame
    print(sales_data)
    

    Додано новий рядок

    Додати новий стовпець

    Ви можете додавати стовпці у свій DataFrame за допомогою простого коду. Тут я хочу додати стовпець Payment Method до своїх даних.

    # Create a new column "PaymentMethod" with values for each row
    sales_data$PaymentMethod <- c("Credit Card", "PayPal", "Cash", "Credit Card", "Cash", "PayPal", "Cash", "Credit Card", "Credit Card", "Cash", "Credit Card")
    # Display the updated DataFrame
    print(sales_data)
    

    Стовпець додано в Dataframe

    Видалити рядки

    Якщо ви хочете видалити непотрібні рядки, цей метод може бути корисним:

    # Identify the row to be deleted by its OrderID
    row_to_delete <- sales_data$OrderID == 1010
    
    # Use the identified row to exclude it and create a new DataFrame
    sales_data <- sales_data[!row_to_delete, ]
    
    # Display the updated DataFrame without the deleted row
    print(sales_data)
    

    Видалити стовпці

    Ви можете видалити стовпець із DataFrame у R за допомогою пакета dplyr.

    # install.packages("dplyr")
    library(dplyr)
    
    # Remove the "Discount" column using the select() function
    sales_data <- sales_data %>% select(-Discount)
    
    # Display the updated DataFrame without the "Discount" column
    print(sales_data)

    Отримати резюме

    Щоб отримати зведення ваших даних у R, ви можете скористатися функцією summary(). Ця функція забезпечує швидкий огляд центральних тенденцій і розподілу числових змінних у ваших даних.

    # Obtain a summary of the data
    data_summary <- summary(sales_data)
    
    # Display the summary
    print(data_summary)
    

    Це кілька кроків, які ви можете виконати, щоб маніпулювати своїми даними в DataFrame.

    Давайте перейдемо до другого методу створення DataFrame.

    #2. Створіть R DataFrame із файлу CSV

    Щоб створити R DataFrame із файлу CSV, ви можете скористатися read.csv()

    # Read the CSV file into a DataFrame
    df <- read.csv("my_data.csv")
    
    # View the first few rows of the DataFrame
    head(df)

    Ця функція зчитує дані з файлу CSV і перетворює їх. Потім ви можете працювати з даними в R за потреби.

    # Install and load the readr package if not already installed
    if (!requireNamespace("readr", quietly = TRUE)) {
      install.packages("readr")
    }
    library(readr)
    
    # Read the CSV file into a DataFrame
    df <- read_csv("data.csv")
    
    # View the first few rows of the DataFrame
    head(df)
    

    ви можете використовувати пакет readr для читання файлу CSV у R. Функція read_csv() із пакета readr зазвичай використовується для цієї мети. Це швидше, ніж звичайний метод.

    #3. Використання функції as.data.frame().

    Ви можете створити DataFrame в R за допомогою функції as.data.frame(). Ця функція дозволяє вам перетворювати інші структури даних, такі як матриці чи списки, у DataFrame.

      Як відновити видалену електронну пошту iCloud

    Ось як ним користуватися:

    # Create a nested list to represent the data
    data_list <- list(
      OrderID = 1001:1011,
      Product = c("Laptop", "Smartphone", "Tablet", "Headphones", "Camera", "TV", "Printer", "Washing Machine", "Refrigerator", "Microwave Oven", "Coffee Maker"),
      Quantity = c(1, 5, 1, 9, 10, 4, 2, 10, 1, 8, 2),
      Price = c(1875.88, 585.31, 978.36, 1886.03, 1958.63, 323.23, 1002.49, 1164.63, 1817.66, 363.55, 75.99),
      Discount = c(0.3, 0.28, 0.02, 0.15, 0.12, 0.27, 0.13, 0.25, 0.22, 0.24, 0.1),
      Date = as.Date(c("2023-01-08", "2023-01-03", "2023-01-02", "2023-01-01", "2023-01-10", "2023-01-09", "2023-01-05", "2023-01-06", "2023-01-04", "2023-01-07", "2023-01-12")),
      PaymentMethod = c("Credit Card", "PayPal", "Cash", "Credit Card", "Cash", "PayPal", "Cash", "Credit Card", "Credit Card", "Cash", "Credit Card")
    )
    
    # Convert the nested list to a DataFrame
    sales_data <- as.data.frame(data_list)
    
    # Display the DataFrame
    print(sales_data)
    

    Sales_data

    Цей метод дозволяє створити DataFrame, не вказуючи кожен стовпець по одному, і особливо корисний, коли у вас є великий обсяг даних.

    #4. З існуючого кадру даних

    Щоб створити новий DataFrame, вибравши певні стовпці або рядки з існуючого DataFrame у R, ви можете використовувати квадратні дужки [] для індексації. Ось як це працює:

    # Select rows and columns
    sales_subset <- sales_data[c(1, 3, 4), c("Product", "Quantity")]
    
    # Display the selected subset
    print(sales_subset)
    

    У цьому коді ми створюємо новий DataFrame під назвою sales_subset, який містить певні рядки (1, 3 і 4) і певні стовпці («Product» і «Quantity») з sales_data.

    Ви можете налаштувати індекси та назви рядків і стовпців, щоб вибрати потрібні дані.

    Sales_Subset

    #5. Від Vector

    Вектор — це одновимірна структура даних у R, яка складається з елементів одного типу даних, зокрема логічних, цілих, подвійних, символьних, складних або необроблених.

    З іншого боку, R DataFrame — це двовимірна структура, призначена для зберігання даних у табличному форматі з рядками та стовпцями. Існують різні методи створення R DataFrame із вектора, і один із таких прикладів наведено нижче.

    # Create vectors for each column
    OrderID <- 1001:1011
    Product <- c("Laptop", "Smartphone", "Tablet", "Headphones", "Camera", "TV", "Printer", "Washing Machine", "Refrigerator", "Microwave Oven", "Coffee Maker")
    Quantity <- c(1, 5, 1, 9, 10, 4, 2, 10, 1, 8, 2)
    Price <- c(1875.88, 585.31, 978.36, 1886.03, 1958.63, 323.23, 1002.49, 1164.63, 1817.66, 363.55, 75.99)
    Discount <- c(0.3, 0.28, 0.02, 0.15, 0.12, 0.27, 0.13, 0.25, 0.22, 0.24, 0.1)
    Date <- as.Date(c("2023-01-08", "2023-01-03", "2023-01-02", "2023-01-01", "2023-01-10", "2023-01-09", "2023-01-05", "2023-01-06", "2023-01-04", "2023-01-07", "2023-01-12"))
    PaymentMethod <- c("Credit Card", "PayPal", "Cash", "Credit Card", "Cash", "PayPal", "Cash", "Credit Card", "Credit Card", "Cash", "Credit Card")
    
    # Create the DataFrame using data.frame()
    sales_data <- data.frame(
      OrderID = OrderID,
      Product = Product,
      Quantity = Quantity,
      Price = Price,
      Discount = Discount,
      Date = Date,
      PaymentMethod = PaymentMethod
    )
    
    # Display the DataFrame
    print(sales_data)
    

    У цьому коді ми створюємо окремі вектори для кожного стовпця, а потім використовуємо функцію data.frame(), щоб об’єднати ці вектори в DataFrame під назвою sales_data.

    Це дозволяє створити структурований табличний кадр даних з окремих векторів у R.

    #6. З файлу Excel

    Щоб створити DataFrame шляхом імпорту файлу Excel у R, ви можете використати пакети сторонніх розробників, такі як readxl, оскільки базовий R не пропонує вбудованої підтримки для читання файлів CSV. Однією з таких функцій для читання файлів Excel є read_excel().

    # Load the readxl library
    library(readxl)
    
    # Define the file path to the Excel file
    excel_file_path <- "your_file.xlsx"  # Replace with the actual file path
    
    # Read the Excel file and create a DataFrame
    data_frame_from_excel <- read_excel(excel_file_path)
    
    # Display the DataFrame
    print(data_frame_from_excel)
    

    Цей код читатиме файл Excel і зберігатиме його дані в R DataFrame, що дозволить вам працювати з даними в середовищі R.

    #7. З текстового файлу

    Ви можете використати функцію read.table() у R, щоб імпортувати текстовий файл у DataFrame. Для цієї функції потрібні два важливі параметри: ім’я файлу, який ви бажаєте прочитати, і роздільник, який визначає, як розділені поля у файлі.

    # Define the file name and delimiter
    file_name <- "your_text_file.txt"  # Replace with the actual file name
    delimiter <- "\t"  # Replace with the actual delimiter (e.g., "\t" for tab-separated, "," for CSV)
    
    # Use the read.table() function to create a DataFrame
    data_frame_from_text <- read.table(file_name, header = TRUE, sep = delimiter)
    
    # Display the DataFrame
    print(data_frame_from_text)
    

    Цей код прочитає текстовий файл і створить його в R, зробивши його доступним для аналізу даних у вашому середовищі R.

      Де розмістити маршрутизатор для найкращої швидкості Wi-Fi

    #8. Використання Tibble

    Щоб створити його за допомогою наданих векторів і використати бібліотеку tidyverse, виконайте такі дії:

    # Load the tidyverse library
    library(tidyverse)
    
    # Create a tibble using the provided vectors
    sales_data <- tibble(
      OrderID = 1001:1011,
      Product = c("Laptop", "Smartphone", "Tablet", "Headphones", "Camera", "TV", "Printer", "Washing Machine", "Refrigerator", "Microwave Oven", "Coffee Maker"),
      Quantity = c(1, 5, 1, 9, 10, 4, 2, 10, 1, 8, 2),
      Price = c(1875.88, 585.31, 978.36, 1886.03, 1958.63, 323.23, 1002.49, 1164.63, 1817.66, 363.55, 75.99),
      Discount = c(0.3, 0.28, 0.02, 0.15, 0.12, 0.27, 0.13, 0.25, 0.22, 0.24, 0.1),
      Date = as.Date(c("2023-01-08", "2023-01-03", "2023-01-02", "2023-01-01", "2023-01-10", "2023-01-09", "2023-01-05", "2023-01-06", "2023-01-04", "2023-01-07", "2023-01-12")),
      PaymentMethod = c("Credit Card", "PayPal", "Cash", "Credit Card", "Cash", "PayPal", "Cash", "Credit Card", "Credit Card", "Cash", "Credit Card")
    )
    
    # Display the created sales tibble
    print(sales_data)
    

    Цей код використовує функцію tibble() із бібліотеки tidyverse для створення tibble DataFrame під назвою sales_data. Формат tibble забезпечує більш інформативний друк порівняно з кадром даних R за замовчуванням, як ви згадали.

    Як ефективно використовувати DataFrames у R

    Ефективне використання DataFrames у R має важливе значення для обробки та аналізу даних. DataFrames є фундаментальною структурою даних у R і зазвичай створюються та маніпулюються за допомогою функції data.frame. Ось кілька порад для ефективної роботи:

    • Перед створенням переконайтеся, що ваші дані чисті та добре структуровані. Видаліть будь-які непотрібні рядки або стовпці, обробіть відсутні значення та переконайтеся, що типи даних є відповідними.
    • Встановіть відповідні типи даних для ваших стовпців (наприклад, числові, символьні, факторні, дата). Це може покращити використання пам’яті та швидкість обчислень.
    • Використовуйте індексування та піднабір для роботи з меншими частинами ваших даних. Підмножина() і [ ] для цієї мети корисні оператори.
    • Хоча attach() і detach() можуть бути зручними, але вони також можуть призвести до двозначності та несподіваної поведінки.
    • R дуже оптимізований для векторизованих операцій. За можливості використовуйте векторизовані функції замість циклів для обробки даних.
    • Вкладені цикли можуть бути повільними в R. Замість вкладених циклів спробуйте використовувати векторизовані операції або застосувати такі функції, як lapply або sapply.
    • Великі DataFrames можуть споживати багато пам’яті. Розгляньте можливість використання пакетів data.table або dtplyr, які більш ефективно використовують пам’ять для великих наборів даних.
    • R має широкий спектр пакетів для обробки даних. Використовуйте такі пакети, як dplyr, tidyr і data.table, для ефективного перетворення даних.
    • Зведіть до мінімуму використання глобальних змінних, особливо під час роботи з кількома DataFrames. Використовуйте функції та передайте DataFrames як аргументи.
    • Працюючи зі зведеними даними, використовуйте функції group_by() і summarize() у dplyr для ефективного виконання обчислень.
    • Для великих наборів даних розгляньте можливість використання паралельної обробки з такими пакетами, як parallel або foreach, щоб пришвидшити операції.
    • Зчитуючи дані в R, використовуйте такі функції, як readr або data.table::fread, замість базових функцій R, таких як read.csv, для швидшого імпорту даних.
    • Для дуже великих наборів даних подумайте про використання систем баз даних або спеціалізованих форматів зберігання, таких як Feather, Arrow або Parquet.

    Дотримуючись цих найкращих практик, ви зможете ефективно працювати з DataFrames у R, роблячи завдання обробки та аналізу даних більш керованими та швидшими.

    Заключні думки

    Створення кадрів даних у R є простим, і у вашому розпорядженні є різні методи. Я підкреслив важливість фреймів даних і обговорив їх створення за допомогою функції data.frame().

    Крім того, ми досліджували методи маніпулювання даними та розповідали, як створювати файли CSV і Excel, перетворювати інші структури даних у кадри даних і використовувати бібліотеку tibble.

    Вас можуть зацікавити найкращі IDE для програмування на R.