ДатаФрамес су основна структура података у Р-у, нудећи структуру, свестраност и алате неопходне за анализу података и манипулацију. Њихов значај се протеже на различите области, укључујући статистику, науку о подацима и доношење одлука засновано на подацима у различитим индустријама.
ДатаФрамес обезбеђују структуру и организацију потребну за откључавање увида и доношење одлука заснованих на подацима на систематичан и ефикасан начин.
ДатаФрамес у Р је структуриран као табеле, са редовима и колонама. Сваки ред представља посматрање, а свака колона представља променљиву. Ова структура олакшава организовање и рад са подацима. ДатаФрамес може да садржи различите типове података, укључујући бројеве, текст и датуме, што их чини разноврсним.
У овом чланку ћу објаснити важност оквира података и разговарати о њиховом креирању помоћу функције дата.фраме().
Поред тога, истражићемо методе за манипулисање подацима и покрити како да креирате из ЦСВ и Екцел датотека, конвертујете друге структуре података у оквире података и користите библиотеку тиббле.
Ево неколико кључних разлога зашто су ДатаФрамес кључни у Р:
Преглед садржаја
Важност оквира података
- Складиштење структурираних података: ДатаФрамес пружају структуриран и табеларни начин складиштења података, слично као табела. Овај структурирани формат поједностављује управљање подацима и организацију.
- Мешовити типови података: оквири података могу да приме различите типове података унутар исте структуре. Можете имати колоне са нумеричким вредностима, низовима знакова, факторима, датумима и још много тога. Ова свестраност је неопходна када радите са подацима из стварног света.
- Организација података: Свака колона у ДатаФраме-у представља променљиву, док сваки ред представља посматрање или случај. Овај структурирани изглед олакшава разумевање организације података, побољшавајући јасноћу података.
- Увоз и извоз података: ДатаФрамес подржава једноставан увоз и извоз података из различитих формата датотека као што су ЦСВ, Екцел и базе података. Ова функција поједностављује процес рада са спољним изворима података.
- Интероперабилност: ДатаФраме су у великој мери подржани од Р пакета и функција, обезбеђујући компатибилност са другим алатима и библиотекама за статистику и анализу података. Ова интероперабилност омогућава беспрекорну интеграцију у Р екосистем.
- Манипулација подацима: Р нуди богат екосистем пакета, а „дплир“ је изузетан пример. Ови пакети олакшавају филтрирање, трансформацију и сумирање података користећи ДатаФрамес. Ова могућност је кључна за чишћење и припрему података.
- Статистичка анализа: ДатаФрамес су стандардни формат података за многе статистичке функције и функције анализе података у Р. Можете ефикасно да извршите регресију, тестирање хипотеза и многе друге статистичке анализе користећи ДатаФрамес.
- Визуелизација: Р-ови пакети за визуелизацију података као што је ггплот2 беспрекорно раде са ДатаФрамес-има. Ово чини једноставним прављење информативних графикона и графикона за истраживање података и комуникацију.
- Истраживање података: оквири података олакшавају истраживање података кроз збирну статистику, визуелизацију и друге аналитичке методе. Ово помаже аналитичарима и научницима за податке да разумеју карактеристике података и открију обрасце или одступања.
Како креирати ДатаФраме у Р
Постоји неколико начина да креирате ДатаФраме у Р. Ево неких од најчешћих метода:
#1. Коришћење функције дата.фраме().
# 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)
Хајде да разумемо шта ће наш код:
Салес_датафраме
Ово је један од најједноставнијих начина да се креира ДатаФраме у Р. Такође ћемо истражити како да издвојимо, додамо, избришемо и изаберемо одређене колоне или редове, као и како да сумирамо податке.
Издвој колоне
Постоје две методе за издвајање потребних колона из нашег оквира података:
- Да бисте преузели последње три колоне ДатаФраме-а у Р, можете користити индексирање.
- Можете издвојити колоне из ДатаФраме-а помоћу оператора $ када желите да приступите појединачним колонама по имену.
Видећемо обоје заједно да бисмо уштедели време:
# 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)
Можете издвојити потребне колоне користећи било који од ових кодова.
Можете издвојити редове из ДатаФраме-а у Р користећи различите методе. Ево једноставног начина да то урадите:
# 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)
Издвојени редови
Додај нови ред
Да бисте додали нови ред у постојећи ДатаФраме у Р, можете користити функцију рбинд():
# 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)
Додан је нови ред
Додај нову колону
Можете додати колоне у свој ДатаФраме једноставним кодом. Овде желим да у своје податке додам колону Начин плаћања.
# 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)
Колона је додата у Датафраме
Избриши редове
Ако желите да избришете непотребне редове, овај метод може бити од помоћи:
# 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)
Избриши колоне
Можете обрисати колону из ДатаФраме-а у Р помоћу пакета дплир.
# 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)
Добијте сажетак
Да бисте добили резиме својих података у Р, можете користити функцију суммари(). Ова функција пружа брз преглед централних тенденција и дистрибуције нумеричких варијабли у вашим подацима.
# Obtain a summary of the data data_summary <- summary(sales_data) # Display the summary print(data_summary)
Ово је неколико корака које можете да пратите да бисте манипулисали својим подацима у оквиру ДатаФраме-а.
Пређимо на други метод за креирање ДатаФраме-а.
#2. Направите Р ДатаФраме из ЦСВ датотеке
Да бисте креирали Р ДатаФраме из ЦСВ датотеке, можете користити реад.цсв()
# Read the CSV file into a DataFrame df <- read.csv("my_data.csv") # View the first few rows of the DataFrame head(df)
Ова функција чита податке из ЦСВ датотеке и конвертује их. Затим можете радити са подацима у Р по потреби.
# 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)
можете користити реадр пакет за читање ЦСВ датотеке у Р. Функција реад_цсв() из реадр пакета се обично користи за ову сврху. То је брже од уобичајене методе.
#3. Коришћење функције ас.дата.фраме().
Можете креирати ДатаФраме у Р користећи функцију ас.дата.фраме(). Ова функција вам омогућава да конвертујете друге структуре података, као што су матрице или листе, у ДатаФраме.
Ево како да га користите:
# 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)
Салес_дата
Овај метод вам омогућава да креирате ДатаФраме без навођења сваке колоне једну по једну и посебно је корисна када имате велику количину података.
#4. Из постојећег оквира података
Да бисте креирали нови оквир података избором одређених колона или редова из постојећег оквира података у Р, можете користити угласте заграде [] за индексирање. Ево како то функционише:
# Select rows and columns sales_subset <- sales_data[c(1, 3, 4), c("Product", "Quantity")] # Display the selected subset print(sales_subset)
У овом коду креирамо нови оквир података који се зове салес_субсет, који садржи одређене редове (1, 3 и 4) и одређене колоне („Производ“ и „Количина“) из салес_дата.
Можете да прилагодите индексе и називе редова и колона да бисте изабрали податке који су вам потребни.
Салес_Субсет
#5. Фром Вецтор
Вектор је једнодимензионална структура података у Р која се састоји од елемената истог типа података, укључујући логичке, целобројне, двоструке, карактерне, сложене или необрађене.
С друге стране, Р ДатаФраме је дводимензионална структура дизајнирана за складиштење података у табеларном формату са редовима и колонама. Постоје различите методе за креирање Р ДатаФраме-а из вектора, а један такав пример је дат у наставку.
# 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)
У овом коду креирамо засебне векторе за сваку колону, а затим користимо функцију дата.фраме() да комбинујемо ове векторе у ДатаФраме под називом салес_дата.
Ово вам омогућава да креирате структурирани табеларни оквир података од појединачних вектора у Р.
#6. Из Екцел датотеке
Да бисте креирали ДатаФраме увозом Екцел датотеке у Р, можете да користите пакете треће стране као што је реадкл пошто основни Р не нуди изворну подршку за читање ЦСВ датотека. Једна таква функција за читање Екцел датотека је реад_екцел().
# 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)
Овај код ће прочитати Екцел датотеку и ускладиштити њене податке у Р ДатаФраме, омогућавајући вам да радите са подацима у вашем Р окружењу.
#7. Из текстуалне датотеке
Можете користити функцију реад.табле() у Р да бисте увезли текстуалну датотеку у ДатаФраме. Ова функција захтева два битна параметра: име датотеке коју желите да прочитате и граничник који одређује како су поља у датотеци раздвојена.
# 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)
Овај код ће прочитати текстуалну датотеку и креирати је у Р, чинећи је приступачном за анализу података у вашем Р окружењу.
#8. Коришћење Тиббле-а
Да бисте га креирали помоћу обезбеђених вектора и користили библиотеку тидиверсе, можете да пратите ове кораке:
# 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)
Овај код користи функцију тиббле() из библиотеке тидиверсе да креира тиббле ДатаФраме под називом салес_дата. Тиббле формат пружа информативније штампање у поређењу са подразумеваним Р оквиром података, као што сте споменули.
Како ефикасно користити оквире података у Р
Ефикасно коришћење оквира података у Р је од суштинског значаја за манипулацију и анализу података. ДатаФраме су основна структура података у Р и обично се креирају и манипулишу помоћу функције дата.фраме. Ево неколико савета за ефикасан рад:
- Пре креирања, уверите се да су ваши подаци чисти и добро структурирани. Уклоните све непотребне редове или колоне, рукујте вредностима које недостају и уверите се да су типови података одговарајући.
- Подесите одговарајуће типове података за своје колоне (нпр. нумерички, карактерни, фактор, датум). Ово може побољшати употребу меморије и брзину рачунања.
- Користите индексирање и подскуп за рад са мањим деловима података. Подскуп() и [ ] оператори су корисни за ову сврху.
- Док аттацх() и детацх() могу бити згодни, али такође могу довести до двосмислености и неочекиваног понашања.
- Р је високо оптимизован за векторизоване операције. Кад год је могуће, користите векторизоване функције уместо петљи за манипулацију подацима.
- Угнежђене петље могу бити споре у Р. Уместо угнежђених петљи, покушајте да користите векторизоване операције или примените функције као што су лаппли или саппли.
- Велики оквири података могу заузети много меморије. Размислите о коришћењу пакета дата.табле или дтплир, који су ефикаснији за меморију за веће скупове података.
- Р има широк спектар пакета за манипулацију подацима. Користите пакете као што су дплир, тидир и дата.табле за ефикасне трансформације података.
- Смањите употребу глобалних променљивих, посебно када радите са више оквира података. Користите функције и проследите ДатаФрамес као аргументе.
- Када радите са агрегатним подацима, користите функције гроуп_би() и суммаризе() у дплир-у да бисте ефикасно извршили прорачуне.
- За велике скупове података, размислите о коришћењу паралелне обраде са пакетима као што су паралелни или фореацх да бисте убрзали операције.
- Када читате податке у Р, користите функције као што су реадр или дата.табле::фреад уместо основних Р функција као што је реад.цсв за бржи увоз података.
- За веома велике скупове података, размислите о коришћењу система база података или специјализованих формата за складиштење као што су Феатхер, Арров или Паркет.
Пратећи ове најбоље праксе, можете ефикасно да радите са ДатаФрамес-има у Р, чинећи своје задатке манипулације подацима и анализе лакшим и бржим.
Последње мисли
Креирање оквира података у Р је једноставно, а на располагању су вам различите методе. Нагласио сам важност оквира података и разговарао о њиховом креирању помоћу функције дата.фраме().
Поред тога, истражили смо методе за манипулисање подацима и покрили како да креирате из ЦСВ и Екцел датотека, конвертујете друге структуре података у оквире података и користите библиотеку тиббле.
Можда ће вас занимати најбољи ИДЕ за Р програмирање.