Lecții din modul (2/2)
Explorare și agregare
R a fost creat în primul rând ca mediu statistic, astfel încât oferă multe funcții încorporate pentru a analiza, rezuma și înțelege distribuția datelor în vectori sau tabele.
Funcții statistice de bază
R vă permite să calculați cu ușurință principalele măsuri de centru și răspândire pe vectori numerici:
mean(x): Calculează media aritmetică a elementelor.median(x): calculează mediana (valoarea mijlocie).sd(x): calculează abaterea standard (o măsură a gradului de răspândire a datelor).min(x)șimax(x): returnează valorile minime și, respectiv, maxime.
values <- c(10, 12, 15, 18, 20, 22)
avg <- mean(values)
dispersion <- sd(values)
cat("Mean:", avg, "- Std Dev:", round(dispersion, 2), "\n")Gestionarea datelor lipsă (NA)
În lumea reală, seturile de date conțin adesea valori lipsă, reprezentate în R de entitatea specială NA (Nedisponibil).
Dacă încercați să calculați media sau orice alt agregat pe un vector care conține chiar și un singur NA, R va returna NA ca rezultat. Pentru a ignora valorile lipsă, trebuie să treceți argumentul logic na.rm = TRUE (eliminare NA):
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))Rezumat global cu summary()
Funcția summary() este un instrument puternic care oferă o imagine de ansamblu statistică completă a unui vector sau a întregului cadru de date, arătând min, primul quartile, mediana, medie, a treia quartila și maxim:
prices <- c(5, 10, 15, 20, 100)
print(summary(prices))Agregarea datelor cu aggregate
Când lucrați cu cadre de date, este obișnuit să se calculeze statistici rezumative (cum ar fi media sau suma) pentru anumite grupuri sau categorii. Funcția aggregate() din R simplifică acest 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)Sintaxa salary ~ department înseamnă „analizați variabila salary pe baza variabilei department”. Argumentul FUN = mean specifică faptul că dorim să calculăm media aritmetică pentru fiecare grup.
Filtrare avansată cu subset
Funcția subset() oferă o modalitate intuitivă și elegantă de a extrage subseturi de rânduri și coloane dintr-un cadru de date, evitând utilizarea parantezelor pătrate complexe:
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)Încercați-l singur
Având în vedere temperaturile vectorului, calculați media și salvați-o în variabila mean_temp. Apoi calculați mediana și salvați-o în median_temp.
Afișează indiciu
Usa mean_temp <- mean(temperaturi) și median_temp <- median(temperaturi)
Soluție disponibilă după 3 încercări
Având în vedere vectorul de scoruri care conține o valoare NA, calculați abaterea standard a vectorului excluzând valorile lipsă și salvați-o în variabila sd_scores.
Afișează indiciu
Utilizați funcția sd() cu argumentul na.rm = TRUE: sd_scores <- sd(scores, na.rm = TRUE)
Soluție disponibilă după 3 încercări
Având în vedere cadrul de date df, obțineți rezumatul statistic al coloanei de valori și salvați-l în variabila stats_summary.
Afișează indiciu
Extrageți coloana folosind operatorul $ și treceți-o la summary(): stats_summary <- summary(df$values)
Soluție disponibilă după 3 încercări
Având în vedere vânzările din cadrul de date, utilizați funcția aggregate() pentru a calcula suma (FUN = suma) a coloanei de venituri grupate după coloana regiune. Salvați rezultatul în variabila region_sales.
Afișează indiciu
Utilizați: region_sales <- aggregate(venituri ~ regiune, date = vânzări, FUN = sumă)
Soluție disponibilă după 3 încercări
Având în vedere produsele din cadrul de date, utilizați funcția subset() pentru a filtra numai produsele care aparțin categoriei „Electronics” (categoria == „Electronics”) și au un preț mai mare de 100 (preț > 100). Salvați rezultatul în variabila expensive_electronics.
Afișează indiciu
Utilizați: expensive_electronics <- subset(produse, categorie == „Electronics” și preț > 100)
Soluție disponibilă după 3 încercări