DataFrames jsou základní datovou strukturou v R, která nabízí strukturu, všestrannost a nástroje nezbytné pro analýzu dat a manipulaci s nimi. Jejich význam se rozšiřuje do různých oblastí, včetně statistiky, datové vědy a rozhodování založeného na datech napříč odvětvími.
DataFrames poskytují strukturu a organizaci potřebnou k odemykání přehledů a přijímání rozhodnutí na základě dat systematickým a efektivním způsobem.
DataFrames v R je strukturován jako tabulky s řádky a sloupci. Každý řádek představuje pozorování a každý sloupec představuje proměnnou. Tato struktura usnadňuje organizaci a práci s daty. DataFrames mohou obsahovat různé typy dat, včetně čísel, textu a dat, díky čemuž jsou univerzální.
V tomto článku vysvětlím důležitost datových rámců a proberu jejich vytváření pomocí funkce data.frame().
Kromě toho prozkoumáme metody pro manipulaci s daty a probereme, jak vytvářet ze souborů CSV a Excel, převádět jiné datové struktury na datové rámce a využívat knihovnu tibble.
Zde je několik klíčových důvodů, proč jsou DataFrames zásadní v R:
Table of Contents
Význam datových rámců
- Ukládání strukturovaných dat: DataFrames poskytují strukturovaný a tabulkový způsob ukládání dat, podobně jako tabulkový procesor. Tento strukturovaný formát zjednodušuje správu a organizaci dat.
- Smíšené datové typy: DataFrames mohou pojmout různé datové typy ve stejné struktuře. Můžete mít sloupce s číselnými hodnotami, znakovými řetězci, faktory, daty a dalšími. Tato všestrannost je nezbytná při práci s reálnými daty.
- Organizace dat: Každý sloupec v DataFrame představuje proměnnou, zatímco každý řádek představuje pozorování nebo případ. Toto strukturované uspořádání usnadňuje pochopení organizace dat a zlepšuje přehlednost dat.
- Import a export dat: DataFrames podporují snadný import a export dat z různých formátů souborů, jako je CSV, Excel a databáze. Tato funkce zefektivňuje proces práce s externími datovými zdroji.
- Interoperabilita: DataFrames jsou široce podporovány balíčky a funkcemi R, což zajišťuje kompatibilitu s dalšími nástroji a knihovnami pro statistickou a datovou analýzu. Tato interoperabilita umožňuje bezproblémovou integraci do R ekosystému.
- Data Manipulation: R nabízí bohatý ekosystém balíčků, přičemž „dplyr“ je výjimečným příkladem. Tyto balíčky usnadňují filtrování, transformaci a sumarizaci dat pomocí DataFrames. Tato schopnost je zásadní pro čištění a přípravu dat.
- Statistická analýza: DataFrames jsou standardní datový formát pro mnoho statistických funkcí a funkcí pro analýzu dat v R. Pomocí DataFrames můžete efektivně provádět regresi, testování hypotéz a mnoho dalších statistických analýz.
- Vizualizace: Balíčky vizualizace dat od R, jako je ggplot2, bezproblémově fungují s DataFrames. Díky tomu je snadné vytvářet informativní tabulky a grafy pro průzkum dat a komunikaci.
- Průzkum dat: DataFrames usnadňují průzkum dat prostřednictvím souhrnných statistik, vizualizací a dalších analytických metod. To pomáhá analytikům a datovým vědcům porozumět charakteristikám dat a odhalit vzory nebo odlehlé hodnoty.
Jak vytvořit DataFrame v R
Existuje několik způsobů, jak vytvořit DataFrame v R. Zde jsou některé z nejběžnějších metod:
#1. Použití funkce 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)
Pojďme pochopit, co náš kód udělá:
Sales_dataframe
Toto je jeden z nejjednodušších způsobů, jak vytvořit DataFrame v R. Prozkoumáme také, jak extrahovat, přidávat, mazat a vybírat konkrétní sloupce nebo řádky a také jak sumarizovat data.
Extrahovat sloupce
Existují dva způsoby, jak extrahovat potřebné sloupce z našeho datového rámce:
- Chcete-li načíst poslední tři sloupce DataFrame v R, můžete použít indexování.
- Sloupce můžete extrahovat z DataFrame pomocí operátoru $, pokud chcete přistupovat k jednotlivým sloupcům podle názvu.
Uvidíme oba společně, abychom ušetřili čas:
# 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)
Pomocí kteréhokoli z těchto kódů můžete extrahovat potřebné sloupce.
Řádky z DataFrame v R můžete extrahovat různými metodami. Zde je jednoduchý způsob, jak to udělat:
# 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)
Můžete také použít zadané podmínky:
# 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)
Extrahované řádky
Přidat nový řádek
Chcete-li přidat nový řádek do existujícího DataFrame v R, můžete použít funkci 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)
Přidán nový řádek
Přidat nový sloupec
Pomocí jednoduchého kódu můžete do svého DataFrame přidat sloupce. Zde chci ke svým údajům přidat sloupec Způsob platby.
# 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)
Sloupec přidán do datového rámce
Smazat řádky
Pokud chcete odstranit nepotřebné řádky, může být užitečná tato metoda:
# 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)
Smazat sloupce
Pomocí balíčku dplyr můžete odstranit sloupec z DataFrame v R.
# 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)
Získat souhrn
Chcete-li získat souhrn vašich dat v R, můžete použít funkci Summary(). Tato funkce poskytuje rychlý přehled o centrálních tendencích a rozložení číselných proměnných ve vašich datech.
# Obtain a summary of the data data_summary <- summary(sales_data) # Display the summary print(data_summary)
Toto je několik kroků, které můžete provést při manipulaci s daty v rámci DataFrame.
Přejděme k druhému způsobu vytvoření DataFrame.
#2. Vytvořte R DataFrame ze souboru CSV
Chcete-li vytvořit R DataFrame ze souboru CSV, můžete použít 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)
Tato funkce čte data ze souboru CSV a převádí je. S daty v R pak můžete pracovat podle potřeby.
# 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)
můžete použít balíček readr ke čtení souboru CSV v R. K tomuto účelu se běžně používá funkce read_csv() z balíčku readr. Je to rychlejší než běžná metoda.
#3. Použití funkce as.data.frame().
DataFrame v R můžete vytvořit pomocí funkce as.data.frame(). Tato funkce vám umožňuje převést další datové struktury, jako jsou matice nebo seznamy, do DataFrame.
Postup použití:
# 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)
Prodejní_data
Tato metoda vám umožňuje vytvořit DataFrame bez zadávání každého sloupce jeden po druhém a je zvláště užitečná, když máte velké množství dat.
#4. Z existujícího datového rámce
Chcete-li vytvořit nový DataFrame výběrem konkrétních sloupců nebo řádků z existujícího DataFrame v R, můžete použít hranaté závorky [] pro indexování. Funguje to takto:
# Select rows and columns sales_subset <- sales_data[c(1, 3, 4), c("Product", "Quantity")] # Display the selected subset print(sales_subset)
V tomto kódu vytváříme nový DataFrame s názvem sales_subset, který obsahuje konkrétní řádky (1, 3 a 4) a konkrétní sloupce („Produkt“ a „Množství“) z sales_data.
Můžete upravit indexy a názvy řádků a sloupců a vybrat data, která potřebujete.
Prodej_Podmnožina
#5. Z Vector
Vektor je jednorozměrná datová struktura v R, která se skládá z prvků stejného datového typu, včetně logických, celočíselných, dvojitých, znakových, komplexních nebo nezpracovaných.
Na druhou stranu R DataFrame je dvourozměrná struktura navržená pro ukládání dat v tabulkovém formátu s řádky a sloupci. Existují různé metody, jak vytvořit R DataFrame z vektoru, a jeden takový příklad je uveden níže.
# 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)
V tomto kódu vytvoříme samostatné vektory pro každý sloupec a poté pomocí funkce data.frame() tyto vektory zkombinujeme do DataFrame s názvem sales_data.
To vám umožní vytvořit strukturovaný tabulkový datový rámec z jednotlivých vektorů v R.
#6. Ze souboru Excel
Chcete-li vytvořit DataFrame importem souboru Excel v R, můžete použít balíčky třetích stran, jako je readxl, protože základní R nenabízí nativní podporu pro čtení souborů CSV. Jednou z takových funkcí pro čtení souborů aplikace Excel je 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)
Tento kód načte soubor Excel a uloží jeho data do R DataFrame, což vám umožní pracovat s daty v prostředí R.
#7. Z textového souboru
K importu textového souboru do DataFrame můžete použít funkci read.table() v R. Tato funkce vyžaduje dva základní parametry: název souboru, který chcete číst, a oddělovač, který určuje, jak jsou pole v souboru oddělena.
# 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)
Tento kód přečte textový soubor a vytvoří jej v R, čímž jej zpřístupní pro analýzu dat ve vašem prostředí R.
#8. Pomocí Tibble
Chcete-li jej vytvořit pomocí poskytnutých vektorů a využít knihovnu tidyverse, můžete postupovat takto:
# 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)
Tento kód používá funkci tibble() z knihovny tidyverse k vytvoření datového rámce tibble s názvem sales_data. Formát tibble poskytuje více informativní tisk ve srovnání s výchozím datovým rámcem R, jak jste zmínil.
Jak efektivně používat DataFrames v R
Efektivní používání DataFrames v R je nezbytné pro manipulaci a analýzu dat. DataFrames jsou základní datovou strukturou v R a jsou obvykle vytvářeny a manipulovány pomocí funkce data.frame. Zde je několik tipů pro efektivní práci:
- Před vytvořením se ujistěte, že jsou vaše data čistá a dobře strukturovaná. Odstraňte všechny nepotřebné řádky nebo sloupce, zpracujte chybějící hodnoty a ujistěte se, že datové typy jsou vhodné.
- Nastavte vhodné datové typy pro vaše sloupce (např. číselný, znakový, faktor, datum). To může zlepšit využití paměti a rychlost výpočtu.
- Pomocí indexování a podmnožin můžete pracovat s menšími částmi dat. Podmnožina() a [ ] K tomuto účelu jsou užitečné operátory.
- Připojit() a odpojit() mohou být pohodlné, ale mohou také vést k nejednoznačnosti a neočekávanému chování.
- R je vysoce optimalizováno pro vektorizované operace. Kdykoli je to možné, používejte pro manipulaci s daty místo smyček vektorizované funkce.
- Vnořené smyčky mohou být v R pomalé. Místo vnořených smyček zkuste použít vektorizované operace nebo použít funkce jako lapply nebo sapply.
- Velké datové rámce mohou spotřebovat hodně paměti. Zvažte použití balíčků data.table nebo dtplyr, které jsou pro větší datové sady efektivnější z hlediska paměti.
- R má širokou škálu balíčků pro manipulaci s daty. Pro efektivní transformaci dat využijte balíčky jako dplyr, tidyr a data.table.
- Minimalizujte používání globálních proměnných, zejména při práci s více datovými rámy. Používejte funkce a předávejte DataFrames jako argumenty.
- Při práci s agregovanými daty použijte funkce group_by() a Summary() v dplyr k efektivnímu provádění výpočtů.
- U velkých datových sad zvažte použití paralelního zpracování s balíčky, jako je parallel nebo foreach, abyste urychlili operace.
- Při čtení dat do R používejte funkce jako readr nebo data.table::fread místo základních funkcí R, jako je read.csv pro rychlejší import dat.
- U velmi velkých datových sad zvažte použití databázových systémů nebo specializovaných formátů úložiště, jako je Feather, Arrow nebo Parquet.
Dodržováním těchto osvědčených postupů můžete efektivně pracovat s DataFrames v R, díky čemuž bude manipulace s daty a analytické úlohy lépe zvládnutelné a rychlejší.
Závěrečné myšlenky
Vytváření datových rámců v R je jednoduché a máte k dispozici různé metody. Zdůraznil jsem důležitost datových rámců a diskutoval o jejich vytváření pomocí funkce data.frame().
Kromě toho jsme prozkoumali metody pro manipulaci s daty a probrali, jak vytvářet ze souborů CSV a Excel, převádět jiné datové struktury na datové rámce a využívat knihovnu tibble.
Možná vás budou zajímat nejlepší IDE pro programování R.