Bài học theo mô-đun (2/2)
Thăm dò và tổng hợp
R được tạo ra chủ yếu như một môi trường thống kê nên nó cung cấp nhiều hàm dựng sẵn để phân tích, tóm tắt và hiểu sự phân bố dữ liệu trong vectơ hoặc bảng.
Các hàm thống kê cơ bản
R cho phép bạn dễ dàng tính toán các số đo chính của tâm và trải trên các vectơ số:
mean(x): Tính trung bình số học của các phần tử.median(x): Tính trung vị (giá trị ở giữa).sd(x): Tính toán độ lệch chuẩn (thước đo mức độ phân tán của dữ liệu).min(x)vàmax(x): Trả về giá trị tối thiểu và tối đa tương ứng.
values <- c(10, 12, 15, 18, 20, 22)
avg <- mean(values)
dispersion <- sd(values)
cat("Mean:", avg, "- Std Dev:", round(dispersion, 2), "\n")Xử lý dữ liệu bị thiếu (NA)
Trong thế giới thực, các tập dữ liệu thường chứa các giá trị bị thiếu, được biểu thị trong R bằng thực thể đặc biệt NA (Không có sẵn).
Nếu bạn cố tính giá trị trung bình hoặc bất kỳ tổng nào khác trên một vectơ thậm chí chỉ chứa một NA, kết quả là R sẽ trả về NA. Để bỏ qua các giá trị bị thiếu, bạn phải chuyển đối số logic na.rm = TRUE (xóa 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))Tóm tắt toàn cầu với summary()
Hàm summary() là một công cụ mạnh mẽ cung cấp tổng quan thống kê đầy đủ về vectơ hoặc toàn bộ Khung dữ liệu, hiển thị tối thiểu, tứ phân vị thứ nhất, trung vị, trung bình, tứ phân vị thứ ba và tối đa:
prices <- c(5, 10, 15, 20, 100)
print(summary(prices))Tổng hợp dữ liệu với aggregate
Khi làm việc với các khung dữ liệu, người ta thường tính toán số liệu thống kê tóm tắt (chẳng hạn như giá trị trung bình hoặc tổng) cho các nhóm hoặc danh mục cụ thể. Hàm aggregate() trong R đơn giản hóa quy trình này:
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)Cú pháp salary ~ department có nghĩa là "phân tích biến salary dựa trên biến department". Đối số FUN = mean chỉ định rằng chúng ta muốn tính giá trị trung bình số học cho mỗi nhóm.
Lọc nâng cao với subset
Hàm subset() cung cấp một cách trực quan và tinh tế để trích xuất các tập hợp con hàng và cột từ khung dữ liệu, tránh sử dụng dấu ngoặc vuông phức tạp:
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)Hãy tự mình thử
Cho trước các vectơ nhiệt độ, tính giá trị trung bình và lưu nó vào biến Mean_temp. Sau đó tính giá trị trung bình và lưu nó vào middle_temp.
Hiển thị gợi ý
Hoa Kỳ Mean_temp <- trung bình(nhiệt độ) e trung bình_temp <- trung bình(nhiệt độ)
Giải pháp khả dụng sau 3 lần thử
Cho vectơ điểm chứa giá trị NA, hãy tính độ lệch chuẩn của vectơ không bao gồm các giá trị bị thiếu và lưu nó vào biến sd_scores.
Hiển thị gợi ý
Sử dụng hàm sd() với đối số na.rm = TRUE: sd_scores <- sd(scores, na.rm = TRUE)
Giải pháp khả dụng sau 3 lần thử
Cho khung dữ liệu df, lấy bản tóm tắt thống kê của cột giá trị và lưu nó vào biến stats_summary.
Hiển thị gợi ý
Trích xuất cột bằng toán tử $ và chuyển nó tới summary(): stats_summary <- summary(df$values)
Giải pháp khả dụng sau 3 lần thử
Căn cứ vào doanh số khung dữ liệu, hãy sử dụng hàm tổng hợp() để tính tổng (FUN = tổng) của cột doanh thu được nhóm theo cột khu vực. Lưu kết quả vào biến vùng_bán hàng.
Hiển thị gợi ý
Sử dụng: khu vực_doanh số <- tổng hợp (doanh thu ~ khu vực, dữ liệu = doanh số, FUN = tổng)
Giải pháp khả dụng sau 3 lần thử
Với các sản phẩm khung dữ liệu, hãy sử dụng hàm subset() để chỉ lọc những sản phẩm thuộc danh mục 'Điện tử' (danh mục == 'Điện tử') và có giá lớn hơn 100 (giá > 100). Lưu kết quả vào biến đắt_electronics.
Hiển thị gợi ý
Sử dụng: đắt_electronics <- tập hợp con(sản phẩm, danh mục == 'Điện tử' & giá > 100)
Giải pháp khả dụng sau 3 lần thử