Hur man skapar DataFrame i R för att hålla data på ett organiserat sätt

DataFrames är en grundläggande datastruktur i R, som erbjuder den struktur, mångsidighet och verktyg som krävs för dataanalys och manipulation. Deras betydelse sträcker sig till olika områden, inklusive statistik, datavetenskap och datadrivet beslutsfattande över branscher.

DataFrames ger den struktur och organisation som behövs för att låsa upp insikter och fatta datadrivna beslut på ett systematiskt och effektivt sätt.

DataFrames i R är strukturerad som tabeller, med rader och kolumner. Varje rad representerar en observation och varje kolumn representerar en variabel. Denna struktur gör det enkelt att organisera och arbeta med data. DataFrames kan innehålla olika datatyper, inklusive siffror, text och datum, vilket gör dem mångsidiga.

I den här artikeln kommer jag att förklara vikten av dataramar och diskutera hur de skapas med hjälp av data.frame()-funktionen.

Dessutom kommer vi att utforska metoder för att manipulera data och ta upp hur man skapar från CSV- och Excel-filer, konverterar andra datastrukturer till dataramar och använder tibble-biblioteket.

Här är några viktiga skäl till varför DataFrames är avgörande i R:

Vikten av DataFrames

  • Strukturerad datalagring: DataFrames tillhandahåller ett strukturerat och tabellformat sätt att lagra data, ungefär som ett kalkylblad. Detta strukturerade format förenklar datahantering och organisation.
  • Blandade datatyper: DataFrames kan rymma olika datatyper inom samma struktur. Du kan ha kolumner med numeriska värden, teckensträngar, faktorer, datum och mer. Denna mångsidighet är viktig när du arbetar med verkliga data.
  • Dataorganisation: Varje kolumn i en DataFrame representerar en variabel, medan varje rad representerar en observation eller ett fall. Denna strukturerade layout gör det enkelt att förstå datas organisation, vilket förbättrar datatydligheten.
  • Dataimport och export: DataFrames stöder enkel dataimport och export från olika filformat som CSV, Excel och databaser. Denna funktion effektiviserar processen att arbeta med externa datakällor.
  • Interoperabilitet: DataFrames stöds brett av R-paket och funktioner, vilket säkerställer kompatibilitet med andra statistiska och dataanalysverktyg och bibliotek. Denna interoperabilitet möjliggör sömlös integration i R-ekosystemet.
  • Datamanipulation: R erbjuder ett rikt ekosystem av paket, där ”dplyr” är ett enastående exempel. Dessa paket gör det enkelt att filtrera, transformera och sammanfatta data med hjälp av DataFrames. Denna förmåga är avgörande för datarensning och förberedelse.
  • Statistisk analys: DataFrames är standarddataformatet för många statistiska och dataanalysfunktioner i R. Du kan utföra regressions-, hypotestestning och många andra statistiska analyser effektivt med hjälp av DataFrames.
  • Visualisering: R:s datavisualiseringspaket som ggplot2 fungerar sömlöst med DataFrames. Detta gör det enkelt att skapa informativa diagram och grafer för datautforskning och kommunikation.
  • Datautforskning: DataFrames underlättar utforskningen av data genom sammanfattande statistik, visualisering och andra analytiska metoder. Detta hjälper analytiker och datavetare att förstå datas egenskaper och upptäcka mönster eller extremvärden.

Hur man skapar DataFrame i R

Det finns flera sätt att skapa en DataFrame i R. Här är några av de vanligaste metoderna:

#1. Använder funktionen 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)

Låt oss förstå vad vår kod kommer att göra:

  • Den kontrollerar först om ”dplyr”-biblioteket är tillgängligt i R-miljön.
  • Om ”dplyr” inte är tillgängligt installerar och laddar biblioteket.
  • Sedan sätter den ett slumpmässigt frö för reproducerbarhet.
  • Därefter skapar den ett exempel på försäljningsdataram med våra ifyllda data.
  • Slutligen visar den försäljningsdataramen i konsolen för visning.
  • Sales_dataframe

    Detta är ett av de enklaste sätten att skapa en DataFrame i R. Vi kommer också att utforska hur man extraherar, lägger till, tar bort och väljer specifika kolumner eller rader, samt hur man sammanfattar data.

    Extrahera kolumner

    Det finns två metoder för att extrahera de nödvändiga kolumnerna från vår dataram:

    • För att hämta de tre sista kolumnerna i en DataFrame i R kan du använda indexering.
    • Du kan extrahera kolumner från en DataFrame med $-operatorn när du vill komma åt enskilda kolumner efter namn.

    Vi kommer att se båda tillsammans för att spara tid:

    # 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)
    
    

    Du kan extrahera nödvändiga kolumner med någon av dessa koder.

    Du kan extrahera rader från en DataFrame i R med olika metoder. Här är ett enkelt sätt att göra det:

    # 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)
    

    Du kan också använda angivna villkor:

    # 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)

    Extraherade rader

    Lägg till ny rad

    För att lägga till en ny rad i en befintlig DataFrame i R kan du använda funktionen 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)
    

    Ny rad tillagd

    Lägg till ny kolumn

    Du kan lägga till kolumner i din DataFrame med enkel kod. Här vill jag lägga till kolumnen Betalningsmetod till mina 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)
    

    Kolumn tillagd i Dataframe

    Ta bort rader

    Om du vill ta bort onödiga rader kan den här metoden vara till hjälp:

    # 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)
    

    Ta bort kolumner

    Du kan ta bort en kolumn från en DataFrame i R med hjälp av dplyr-paketet.

    # 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)

    Skaffa sammanfattning

    För att få en sammanfattning av dina data i R kan du använda summary()-funktionen. Denna funktion ger en snabb överblick över de centrala tendenserna och fördelningen av numeriska variabler i dina data.

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

    Det här är flera steg du kan följa för att manipulera dina data inom en DataFrame.

    Låt oss gå vidare till den andra metoden för att skapa en DataFrame.

    #2. Skapa en R DataFrame från CSV-fil

    För att skapa en R DataFrame från en CSV-fil kan du använda 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)

    Denna funktion läser data från en CSV-fil och konverterar den. Du kan sedan arbeta med datan i R efter behov.

    # 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)
    

    du kan använda readr-paketet för att läsa en CSV-fil i R. Read_csv()-funktionen från readr-paketet används vanligtvis för detta ändamål. Det är snabbare än den vanliga metoden.

    #3. Använder funktionen as.data.frame()

    Du kan skapa en DataFrame i R med funktionen as.data.frame() . Denna funktion låter dig konvertera andra datastrukturer, såsom matriser eller listor, till en DataFrame.

    Så här använder du det:

    # 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)
    

    Försäljningsdata

    Denna metod låter dig skapa en DataFrame utan att specificera varje kolumn en efter en och är särskilt användbar när du har en stor mängd data.

    #4. Från den befintliga dataramen

    För att skapa en ny DataFrame genom att välja specifika kolumner eller rader från en befintlig DataFrame i R, kan du använda hakparenteser [] för indexering. Så här fungerar det:

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

    I den här koden skapar vi en ny DataFrame som heter sales_subset, som innehåller specifika rader (1, 3 och 4) och specifika kolumner (“Product” och “Quantity”) från sales_data.

    Du kan justera rad- och kolumnindex och namn för att välja den data du behöver.

    Försäljning_Subset

    #5. Från Vector

    En vektor är en endimensionell datastruktur i R som består av element av samma datatyp, inklusive logiskt, heltal, dubbelt, tecken, komplext eller rått.

    Å andra sidan är en R DataFrame en tvådimensionell struktur utformad för att lagra data i ett tabellformat med rader och kolumner. Det finns olika metoder för att skapa en R DataFrame från en vektor, och ett sådant exempel ges nedan.

    # 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)
    

    I den här koden skapar vi separata vektorer för varje kolumn, och sedan använder vi funktionen data.frame() för att kombinera dessa vektorer till en DataFrame med namnet sales_data.

    Detta låter dig skapa en strukturerad tabelldataram från individuella vektorer i R.

    #6. Från Excel-fil

    För att skapa en DataFrame genom att importera en Excel-fil i R, kan du använda tredjepartspaket som readxl eftersom basen R inte erbjuder inbyggt stöd för att läsa CSV-filer. En sådan funktion för att läsa Excel-filer är 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)
    

    Denna kod kommer att läsa Excel-filen och lagra dess data i en R DataFrame, så att du kan arbeta med data i din R-miljö.

    #7. Från textfil

    Du kan använda funktionen read.table() i R för att importera en textfil till en DataFrame. Denna funktion kräver två viktiga parametrar: filnamnet du vill läsa och avgränsaren som anger hur fälten i filen separeras.

    # 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)
    

    Denna kod kommer att läsa textfilen och skapa den i R, vilket gör den tillgänglig för dataanalys i din R-miljö.

    #8. Använder Tibble

    För att skapa den med hjälp av de medföljande vektorerna och använda tidyverse-biblioteket kan du följa dessa steg:

    # 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)
    

    Den här koden använder tibble()-funktionen från tidyverse-biblioteket för att skapa en tibble DataFrame med namnet sales_data. Tibble-formatet ger mer informativ utskrift jämfört med standard R-dataram, som du nämnde.

    Hur man använder dataramar effektivt i R

    Att använda DataFrames effektivt i R är avgörande för datamanipulation och analys. DataFrames är en grundläggande datastruktur i R och skapas och manipuleras vanligtvis med hjälp av data.frame-funktionen. Här är några tips för att arbeta effektivt:

    • Innan du skapar, se till att din data är ren och välstrukturerad. Ta bort alla onödiga rader eller kolumner, hantera saknade värden och se till att datatyperna är lämpliga.
    • Ställ in lämpliga datatyper för dina kolumner (t.ex. numerisk, tecken, faktor, datum). Detta kan förbättra minnesanvändning och beräkningshastighet.
    • Använd indexering och delinställningar för att arbeta med mindre delar av din data. Delmängden() och [ ] operatörer är användbara för detta ändamål.
    • Medan attach() och detach() kan vara bekväma, men de kan också leda till tvetydighet och oväntat beteende.
    • R är mycket optimerad för vektoriserade operationer. När det är möjligt, använd vektoriserade funktioner istället för loopar för datamanipulation.
    • Kapslade loopar kan vara långsamma i R. Istället för kapslade loopar, försök att använda vektoriserade operationer eller tillämpa funktioner som lapply eller sapply.
    • Stora dataramar kan förbruka mycket minne. Överväg att använda data.table eller dtplyr-paket, som är mer minneseffektiva för större datamängder.
    • R har ett brett utbud av paket för datamanipulation. Använd paket som dplyr, tidyr och data.table för effektiva datatransformationer.
    • Minimera användningen av globala variabler, särskilt när du arbetar med flera DataFrames. Använd funktioner och skicka DataFrames som argument.
    • När du arbetar med aggregerad data, använd funktionerna group_by() och summarize() i dplyr för att effektivt utföra beräkningar.
    • För stora datamängder, överväg att använda parallell bearbetning med paket som parallell eller foreach för att påskynda operationer.
    • När du läser data till R, använd funktioner som readr eller data.table::fread istället för bas R-funktioner som read.csv för snabbare dataimport.
    • För mycket stora datamängder, överväg att använda databassystem eller specialiserade lagringsformat som Feather, Arrow eller Parquet.

    Genom att följa dessa bästa praxis kan du arbeta effektivt med DataFrames i R, vilket gör dina datamanipulerings- och analysuppgifter mer hanterbara och snabbare.

    Slutgiltiga tankar

    Att skapa dataramar i R är enkelt, och det finns olika metoder till ditt förfogande. Jag har lyft fram vikten av dataramar och diskuterat hur de skapas med hjälp av data.frame()-funktionen.

    Dessutom har vi utforskat metoder för att manipulera data och täckt hur man skapar från CSV- och Excel-filer, konverterar andra datastrukturer till dataramar och använder tibble-biblioteket.

    Du kanske är intresserad av de bästa IDE:erna för R-programmering.