Quy trình merge dataset trong R [Facebook]

https://applyr.netlify.app/codebase/quarto-merge-data/quarto-merge-data.html

Tình huống thường gặp: bạn có một số file excel lưu các dữ liệu khác nhau có chung 1 cột ID, giờ bạn muốn gộp lại hết thành 1 data frame tổng thể thì sẽ làm như thế nào cho tiện.

Cách tiếp cận:

1/ Bạn check kỹ xem giữa các file excel này có cột ID như thế nào là chặt chẽ. Ví dụ cả 2 file đều có cột `country` `year` thì bạn sẽ tạo ra 1 cột duy nhất là `country---year` để nhằm làm cột ID cho R định hướng việc gộp lại căn cứ theo cột ID này (ta sẽ tách ra ở bước sau khi đã merge hoàn chỉnh). Như vậy đảm bảo mỗi hàng của bạn đều là unique ID, không có trùng lặp.

2/ Bạn merge theo từng cặp dataset với tham số all = TRUE nhằm lấy toàn bộ các cột trong cả hai dataset, nếu bị thiếu dữ liệu ở cột nào thì R sẽ cho missing value ở đó.

3/ Sau mỗi lần merge thì ta sẽ subset chọn những cột cần thiết để tạo dataset clean phục vụ việc merge lần tiếp theo với dataset khác.

4/ Sau cùng tách cột ID (country---year) thành country và year để phục vụ xử lý dữ liệu giai đoạn sau (có thể imputation các giá trị missing value hoặc làm sạch NA tùy vào nhu cầu phân tích).

Trong file hướng dẫn này mình có đính kèm folder project để các bạn run lại trên máy tính và test thêm các cách khác nhau. Thực tế có nhiều kỹ thuật merge và reshape trong R, bạn cảm thấy hiểu rõ cơ chế của phương pháp nào thì sẽ áp dụng theo hướng đó, mục tiêu vẫn là đảm bảo tính toàn vẹn và chặt chẽ trong quá trình gộp dữ liệu phục vụ công tác phân tích sau này được chính xác.

Merge (gộp) và reshape (chuyển long thành wide và ngược lại) là các kỹ thuật sắp xếp dữ liệu data wrangling thường gặp khi bạn làm việc trong R. Có nhiều bài viết hướng dẫn, package phục vụ cho nhu cầu này, bạn dễ dàng tìm được trên google. Trong cách tiếp cận của mình thì muốn dùng các lệnh căn bản có sẵn trong R để trực tiếp làm việc sao cho thuận tiện, khi nào các lệnh căn bản này không đáp ứng được nhu cầu của mình (cần phải code dài hơn) thì mình sẽ bắt đầu tìm xem có package nào cung cấp chức năng thay thế.

Điểm thuận lợi của việc hiểu rõ các lệnh căn bản của R là rất ít khi các lệnh này bị thay đổi tham số/tên function qua các đợt update version. Trong khi đó các lệnh reshape cung cấp từ package khác thì khả năng rất cao là bị thay đổi tên function và các chức năng nho nhỏ khác sau mỗi lần package đó update phiên bản mới nên khi bạn áp dụng code sau này sẽ dễ bị lỗi (cần update lại tên function tương ứng).

Mình có viết một bài hướng dẫn về kỹ thuật reshape dữ liệu ở link này, các bạn tham khảo nhé. Cách tiếp cận để hiểu cơ chế các lệnh căn bản của R là bạn làm trên dataset small nha (bạn tạo ra khá nhiều tình huống cực đoan khác nhau để hiểu cơ chế của R treat data), nếu dataset small mà hoạt động smoothly thì áp dụng vào real dataset cũng sẽ tương tự như vậy.

https://thongkesinhhoc.com/ky-thuat-reshape-du-lieu