Modulelessen (2/2)
Verkenning en aggregatie
R is in de eerste plaats gemaakt als een statistische omgeving en biedt daarom veel ingebouwde functies voor het analyseren, samenvatten en begrijpen van de distributie van gegevens in vectoren of tabellen.
Basisstatistische functies
Met R kunt u eenvoudig de belangrijkste maten van centrum en spreiding op numerieke vectoren berekenen:
mean(x): Berekent het rekenkundig gemiddelde van de elementen.median(x): Berekent de mediaan (de middelste waarde).sd(x): Berekent de standaardafwijking (een maatstaf voor hoe verspreid de gegevens zijn).min(x)enmax(x): retourneren respectievelijk de minimum- en maximumwaarden.
values <- c(10, 12, 15, 18, 20, 22)
avg <- mean(values)
dispersion <- sd(values)
cat("Mean:", avg, "- Std Dev:", round(dispersion, 2), "\n")Ontbrekende gegevens verwerken (NA)
In de echte wereld bevatten datasets vaak ontbrekende waarden, weergegeven in R door de speciale entiteit NA (niet beschikbaar).
Als u het gemiddelde of een ander aggregaat probeert te berekenen voor een vector die zelfs maar één enkele NA bevat, retourneert R NA als resultaat. Om ontbrekende waarden te negeren, moet u het logische argument na.rm = TRUE doorgeven (NA verwijderen):
temperatures <- c(18, 21, NA, 24, 19)
# This will return NA
print(mean(temperatures))
# This will ignore the NA and perform the calculation on valid values
print(mean(temperatures, na.rm = TRUE))Globaal overzicht met summary()
De functie summary() is een krachtig hulpmiddel dat een compleet statistisch overzicht biedt van een vector of een volledig dataframe, met min, eerste kwartiel, mediaan, gemiddelde, derde kwartiel en max:
prices <- c(5, 10, 15, 20, 100)
print(summary(prices))Gegevens samenvoegen met aggregate
Bij het werken met dataframes is het gebruikelijk om samenvattende statistieken (zoals gemiddelde of som) voor specifieke groepen of categorieën te berekenen. De functie aggregate() in R vereenvoudigt dit proces:
df <- data.frame(
department = c("HR", "IT", "HR", "IT"),
salary = c(3000, 4500, 3200, 4800)
)
# Calcola la media dei salari per dipartimento
avg_salaries <- aggregate(salary ~ department, data = df, FUN = mean)
print(avg_salaries)De syntaxis salary ~ department betekent "analyseer de variabele salary op basis van de variabele department". Het argument FUN = mean geeft aan dat we het rekenkundig gemiddelde voor elke groep willen berekenen.
Geavanceerd filteren met subset
De functie subset() biedt een intuïtieve en elegante manier om subsets van rijen en kolommen uit een dataframe te extraheren, waarbij het gebruik van complexe vierkante haakjes wordt vermeden:
employees <- data.frame(
name = c("Alice", "Bob", "Charlie"),
age = c(25, 34, 29),
active = c(TRUE, FALSE, TRUE)
)
# Filtra solo i dipendenti attivi con età superiore a 28
active_employees <- subset(employees, active == TRUE & age > 28)Probeer het zelf
Bereken, gegeven de vectortemperaturen, het gemiddelde en sla dit op in de variabele mean_temp. Bereken vervolgens de mediaan en sla deze op in median_temp.
Toon hint
Usa mean_temp <- mean(temperaturen) e median_temp <- mediaan(temperaturen)
Oplossing beschikbaar na 3 pogingen
Gegeven dat de scoresvector een NA-waarde bevat, berekent u de standaardafwijking van de vector, exclusief ontbrekende waarden, en slaat u deze op in de variabele sd_scores.
Toon hint
Gebruik de functie sd() met het argument na.rm = TRUE: sd_scores <- sd(scores, na.rm = TRUE)
Oplossing beschikbaar na 3 pogingen
Gegeven het dataframe df, verkrijgt u de statistische samenvatting van de waardenkolom en slaat u deze op in de variabele stats_summary.
Toon hint
Extraheer de kolom met behulp van de operator $ en geef deze door aan summary(): stats_summary <- summary(df$values)
Oplossing beschikbaar na 3 pogingen
Gebruik, gegeven de dataframeverkopen, de functie aggregate() om de som (FUN = som) te berekenen van de omzetkolom gegroepeerd op de regiokolom. Sla het resultaat op in de variabele region_sales.
Toon hint
Gebruik: region_sales <- aggregate(revenue ~ region, data = sales, FUN = som)
Oplossing beschikbaar na 3 pogingen
Gebruik, gegeven de dataframeproducten, de functie subset() om alleen de producten te filteren die tot de categorie 'Elektronica' behoren (categorie == 'Elektronica') en een prijs hebben die hoger is dan 100 (prijs > 100). Sla het resultaat op in de variabele dure_elektronica.
Toon hint
Gebruik: dure_elektronica <- subset(producten, categorie == 'Elektronica' en prijs > 100)
Oplossing beschikbaar na 3 pogingen