Tag Archives: nối file

Cách ghép nối file dữ liệu Stata bằng lệnh merge và append

Bạn có nhiều bộ số liệu, với các cột giống nhau cần gom lại. Hoặc là bạn có nhiều bộ số liệu, tuy các cột không giống nhau hoàn toàn nhưng các cột đó có quan hệ với nhau và cần gom lại, thì bài này là giải pháp dành cho bạn với 2 lệnh cực kì mạnh để xử lý kết nối file là mergeappend.

Lệnh merge thì thường dùng để kết nối file theo chiều ngang( nghĩa là thêm cột,ví dụ 2 bộ số liệu, mỗi bộ có 3 biến, thì bộ số liệu cuối cùng có thể có 4-5-6 biến), còn lệnh append thì thường dùng để ghép nối file theo chiều dọc( nghĩa là 2 bộ số liệu mỗi bộ có 100 quan sát, bộ số liệu cuối cùng có thể có 200 quan sát).
Stata chỉ có thể hiển thị một tập dữ liệu tại một thời điểm. Tập dữ liệu đang được hiển thị, đang được sử dụng, được gọi là dữ liệu chủ master. Bộ dữ liệu bạn muốn nối vào được gọi là dữ liệu using. Lệnh append ghép nối file dữ liệu dựa trên tên biến và lệnh merge ghép nối file dữ liệu dựa trên giá trị của biến.
Khi bạn có hai file dữ liệu, bạn có thể muốn kết hợp chúng bằng cách xếp chồng chúng lên nhau.

Ví dụ lệnh append

Bây giờ sẽ là ví dụ minh họa. Ta sẽ tạo 2 bộ số liệu sau đó sẽ ghép lại với nhau theo chiều dọc nhé( dùng lệnh append)
Lệnh sau dùng tạo file số liệu chứa mã hộ và tên cha
input famid str4 name inc
2 "Art" 22000
1 "Bill" 30000
3 "Paul" 25000
end
save dads, replace
list

 

Lệnh sau dùng tạo file số liệu chứa mã hộ và tên mẹ
clear
input famid str4 name inc
1 "Bess" 15000
3 "Pat" 50000
2 "Amy" 18000
end
save moms, replace
list

 

2 bộ số liệu mỗi bộ có 3 dòng, giờ sẽ gộp lại thành 1 bộ có 6 dòng nhé
use dads, clear
append using moms

 

Như vậy 3 dòng số liệu màu đỏ là của bộ số liệu dads, 3 dòng màu xanh là của bộ số liệu moms, tất cả đã được Stata gom lại thành 1 file duy nhất, bây giờ bạn có thể lưu lại thành file mới sau khi sử dụng lệnh append rồi nhé.

Ví dụ lệnh merge

Ghép file dạng 1:1

Bây giờ tạo một file mới chứa thu nhập của hộ gia đình:
clear
input famid faminc96 faminc97 faminc98
3 75000 76000 77000
1 40000 40500 41000
2 45000 45400 45800
end
save faminc, replace
list

 

Giờ ta sẽ dùng lệnh merge để thêm các thông tin về thu nhập của hộ gia đình vào file dads ở ví dụ trên nhé.
clear
use dads
merge 1:1 famid using faminc.dta
list

 
Như vậy các cột màu đỏ đã được thêm vào bộ số liệu, với khóa ở đây là mã số của hộ gia đình famid
Lệnh merge 1:1, có nghĩa là ghép vào dạng đơn giản, còn dưới dây là dạng phức tạp hơn, bây giờ file dads sẽ được ghép vào với file con cái.

Ghép file dạng 1:nhiều

Trước tiên ta tạo file danh sách các con nhé
clear
input famid str4 kidname birth age wt str1 sex
1 "Beth" 1 9 60 "f"
2 "Andy" 1 8 40 "m"
3 "Pete" 1 6 20 "f"
1 "Bob" 2 6 80 "m"
1 "Barb" 3 3 50 "m"
2 "Al" 2 6 20 "f"
2 "Ann" 3 2 60 "m"
3 "Pam" 2 4 40 "f"
3 "Phil" 3 2 20 "m"
end
save kids3

 

Sau đó ta ghép các con này vào danh sách các người cha lúc nãy
clear
use dads
merge 1:m famid using kids3
list

 

Các cột màu đỏ chính là danh sách các con của các ông bố này nhé. Như vậy bộ số liệu stata đã được ghép theo dạng 1:m, nói cách khác là 1:nhiều, nghĩa là một gia đình, 1 ông bố có nhiều đứa con.

Ghép file dạng nhiều:1

Bây giờ ta làm việc tương tự, nhưng ta sẽ chọn file chủ là file kids, file được chọn thêm là file dads. Vì một ông bố có nhiều con nên cú pháp sẽ là như sau:
clear
use kids3
merge m:1 famid using dads
list

 

Cột đỏ chính là các thông tin về cha của đứa trẻ các bạn nhé.

Bạn cứ trao đổi thêm với nhóm ở đây, hoặc comment bên dưới nhé.

Liên hệ nhóm thạc sĩ Hỗ trợ Stata.

– SMS, Zalo, Viber:

phone number

– Facebook  facebook.com/hotroStata

Email  hotrostata@gmail.com