quản lý dữ liệu với Stata

48 95 0
quản lý dữ liệu với Stata

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

TẠO BỘ SỐ LIỆU MỚI TRONG STATA Nhập trực tiếp vào khung Data Editor cửa sổ Stata Nếu giá trị biến số biến quy định numerical variable Nếu biến nhập chuỗi quy định chuỗi Các lệnh sử dụng sau tạo biến bao gồm XÁC ĐỊNH CÁC SUBSET DATA CHO BỘ DỮ LIỆU list in 1/20 Liệt kê quan sát từ 1-20 Xếp thứ tự biến pop Sau liệt kê quan sát từ quan sát cuối trở lên quan sát sum if pop< 20000 Variable | Obs Mean Std Dev Min Max -+ place | pop | 12 2467.158 3435.521 30.1 11100.3 unemp | 10 12.26 4.44877 19.6 mlife | 12 74.225 1.728965 70.2 75.8 flife | 12 80.68333 1.0116 78 81.8 Tóm tắt số liệu với quan sát có pop < 20000 sum if place !="Canada" Variable Obs Mean Std Dev Min Max 3435.521 30.1 11100.3 place pop 12 2467.158 unemp 10 12.26 4.44877 19.6 mlife 12 74.225 1.728965 70.2 75.8 flife 12 80.68333 1.0116 78 81 Tóm tắt số liệu với quan sát có place khác với chữ Canada Lưu ý với biến chuỗi sử áp dụng tất dấu toán học sum unemp mlife if Variable Obs pop > 100 & pop < 20000 Mean Std Dev Min unemp 10 12.26 4.44877 19.6 mlife 10 74.92 6051633 73.9 75.8 Max Tóm tắt unemp mlife quan sát có pop> 100 < 20000 list if unemp< |( mlife>=75.4 & flife>= 81.4) place pop unemp Manitoba 1137.5 8.5 Saskatchewan 10 Alberta 11 British Columbia 1015.6 2747 mlife flife 75 8.4 75.5 3766 9.8 80.8 75.2 81.8 81.4 75.8 81.4 Dấu ngoặc đơn hàm toán học ngoặc phải ưu tiên trước TẠO VÀ THAY BIẾN MỚI Lệnh clonevar clonevar mompraise = R3483600 Lệnh clonevar có đặc điểm là: đơn giản, giữ giá trị theo định dạng biến cũ, giữ nhãn giá trị cho biến Lệnh generate gen gap = flife- mlife list mlife flife gap + + | mlife flife gap | | | | 75.1 81.1 | | 73.9 79.8 5.900002 | | 74.8 81.3 6.5 | | 74.2 80.4 6.200005 | | 74.8 80.6 5.799995 | format gap %4.1f list mlife flife gap + -+ | mlife flife gap | | -| | 75.1 81.1 6.0 | | 73.9 79.8 5.9 | | 74.8 81.3 6.5 | | 74.2 80.4 6.2 | | 74.8 80.6 5.8 | Tạo biến gap hiệu số flife mlife Biến gap có số thập phân chữ số Để rút ngắn cách trình bày biến gap thành hai chữ số thập phân dùng lệnh format %4.1f nghĩa gap định dạng chữ số số thập phân đằng sau Tuy nhiên định dạng không thay đổi giá trị gap thành hai chữ số thập phân Bản chất gap chữ số thập phân Có định dạng chữ số Stata: %w.dg: định dạng số chung (general) w độ rộng tổng số cột trình bày d số thập phân tối thiểu sau dấu thập phân %w.df: định dạng chữ số cố định (fixed), w tổng độ rộng số cột trình bày d số thập phân cố định sau dấu thập phân %w.de: định dạng chữ số lũy thừa (exponential) w độ rộng cột số cột trình bày d số thập phân cố định theo sau dấu thập phân Mặc dù định dạng chữ số có khác giá trị bên khơng thay đổi Các phép tính tác dụng giá trị gốc định dạng gen caseID = _n Tạo biến caseID số thứ tự quan sát từ thấp đến cao (1 đến n) Lệnh replace Lệnh replace thay đổi giá trị biến không tạo biến lệnh generate gen type=1 replace type=2 if place=="Yukon" | place =="Northwest Territories" (2 real changes made) replace type=3 if place =="Canada" (1 real change made) Lệnh replace phối hợp với lệnh gen tạo biến phân loại Lệnh egen Lệnh egen (extension of generate) giúp tạo biến có ln hàm tốn học Zscore biến có giá trị chuẩn hóa biến x (trung bình =0 , độ lệch chuẩn =1) Biến sum biến tổng hàng giá trị bốn biến x, y, z, w Biến xrank biến giữ thứ bậc giá trị x xrank = cho giá trị x cao xrank=2 cho giá trị thứ cao thứ hai v.v Tạo biến var4 tổng điểm hàng biến var1, var3 var3 Tạo biến mean trung bình hàng biến var1 var2 var3 Lệnh mvdecode Thay giá trị biến thành missing (.) SỬ DỤNG VÒNG LẶP (LOOP) NỐI VÀ GHÉP TẬP TIN SỐ LIỆU Nối tập tin số liệu (append data) Nối tập tin số liệu nối hai file có biến khác số quan sát để tạo thành tập tin Nguyên tắc nối tập tin số liệu sau: - before merge Bộ số liệu  master Tên tập tin  data1  Tên biến số Số quan sát  - after merge - using data2 ID X Y data3 ID X Y ID X Y 10 13 15 10 11 14 16 11 12 12 13 15 14 16 insheet using Ch1-4data2.txt Chuyển file Ch1-4data2.txt (file dạng text) vào nhớ Stata list save Ch1-4data2 , replace Lưu file Ch1-4data2.txt thành dạng Ch1-4data2.dta insheet using Ch1-4data1.txt , clear // now that we have a Stata-formatted file ready to append, we next // start with a dataset in memory (combining the insheet and clear // commands) list append using Ch1-4data2 // append data2 on end of data1 list save Ch1-4data3 , replace // save the combined dataset out to a new file Ghép tập tin số liệu (merge data) Ghép tập tin số liệu nghĩa ghép biến số quan sát từ hai hay nhiều tập tin số liệu với Ghép tập tin số liệu thường sử dụng nghiên cứu theo dõi đối tượng có nhiều hồ sơ đợt khám sức khỏe khác trình theo dõi Có nhiều dạng ghép tập tin số liệu Ghép 1:1: Trong cách ghép ghép hai tập tin có biến số khác Quan sát thứ tập tin chủ (tập tin nhớ) ghép với quan sát thứ tập tin hành, tiếp tục hết quan sát Nguyên tắc ghép sau: - before merge master using data1 data4 - after merge data5 ID X Y Z ID X Y Z 10 17 10 17 11 18 11 18 12 19 12 19 20 20 Lệnh merge ghép quan sát tương ứng tập tin nhớ (hay gọi tập tin chủ-master) tập tin hành đĩa C (hay gọi tập tin sử dụng-using) thành quan sát use "E:\DE TAI\DE TAI DA HOAN THANH\chi tan.dta", clear Mở tập tin chitan thư mục E:\DE TAI\DE TAI DA HOAN THANH list Liệt kê tập tin chitan (bắt buộc để Stata ghi nhớ tập tin tập tin master) use "E:\DE TAI\DE TAI DA HOAN THANH\detaichiloan.dta", clear -`i',year(oneMonthLaterTemp)) if oneMonthLater3== local i=`i'+1 // increase number of days to subtract drop numInvalid egen numInvalid=total(oneMonthLater3==.) // see if we still have invalid dates } drop oneMonthLaterTemp numInvalid format oneMonthLater3 %td gen DVadmission1 = Trong trường hợp dùng hàm date mà date(Admission_date_1_12M, tạo biến blank chưa xác "DM20Y") định kỷ cho biến, ngoặc phải đổi “DM20Y” Stata hiểu 20Y: định kỷ 20 cho năm ngày gen sinh Hàm mdy dùng trường hợp ngày newvar=mdy(varmonth,varday,varyear) nghiên cứu tách thành biến * This assumes month, day, & year ngày, biến tháng, biến năm Khi hàm mdy tạo nên biến số ngày are *numeric* variables gen date = mdy(month, day, year) tổng hợp biến // this is what actually combines the (lưu ý đặt varmonth month, varday day, varyear year câu variables into a single date format date %td clonevar date2 = date format date2 %tdCY-N-D lệnh chạy đúng) // format as 2007-05-01 gen date3 = date // note that date3 is not formatted as a date gen newvar=year(var) Hàm month, year, day cho phép bạn rút trích tháng, năm, ngày biến gen newvar=month(var) ngày tháng thành biến tháng, năm, ngày dạng số gen newvar=day(var) Thay đổi giá trị biến số mvdecode varlist, mv(- Chuyển giá trị -99 (theo quy ước giá trị mất) 99) replace var = exp thành dấu “.” (ký hiệu giá trị Stata) Chuyển giá trị biến thành giá trị recode varlist (rule) khác Chuyển toàn quan sát loại giá trị thành loại giá trị khác Ví dụ 1: mvdecode _all, mv(-99) iq: missing values generated anxiety: missing values generated depress: missing values generated _all lệnh cho Stata chuyển tất giá trị -99 tất biến tập tin thành giá trị missing “.” Trong tập tin này, biến iq có giá trị chuyển đổi, biến anxiety có giá trị chuyển đổi v.v Ví dụ 2: replace sleep= if sleep==3 Thay giá trị biến sleep giá trị “.” (giá trị missing) Lưu ý dấu “=” có nghĩa gán “==” có nghĩa Ví dụ 3: recode sleep 1=2 2=1 Chuyển giá trị biến sleep thành giá trị giá trị thành giá trị recode sleep =2 Chuyển giá trị thành giá trị recode sleep 3/5 = Chuyển giá trị từ 3/5 thành giá trị recode sleep nonmiss=8 Chuyển giá trị missing biến sleep thành giá trị recode sleep miss=3 Chuyển giá trị missing thành giá trị recode sleep else=7 Chuyển giá trị lại thành giá trị Ví dụ 4: gen lowbw2 = if lowbw=="Y" | lowbw=="y" Tạo biến lowbw2 có giá trị giá trị Y y biến lowbw (biến lowbw biến chuỗi với giá trị Y y dùng để có lại viết hoa không viết hoa) replace lowbw2 = if lowbw=="n" Thay giá trị lại biến lowbw2 trường hợp giá trị biến lowbw n (nếu khơng có lệnh biến lowbw2 gồm giá trị giá trị lại quy missing “.”) Ví dụ 5: gen lowbw2=1 if inlist(lowbw,"Y","y") Tạo biến lowbw2 có giá trị giá trị Y y biến lowbw replace lowbw2 = if inlist(lowbw,"N","n") Thay giá trị lại biến lowbw2 trường hợp giá trị biến lowbw n N Ví dụ 6: replace matage="" if matage=="nd" Thay giá trị nd biến matage (là biến chuỗi) thành giá trị (đối với biến chuỗi giá trị quy định “”)(sử dụng lệnh trường hợp nhập liệu biến matage biến số có lẫn giá trị nd làm biến matage trở thành biến chuỗi) destring matage, replace Chuyển biến matage thành biến số Ví dụ 7: replace sexalph=upper(sexalph) Chuyển giá trị biến sexalph (biến chuỗi) thành chữ viết hoa Ví dụ 8: replace sexalph=lower(sexalph) Chuyển giá trị biến sexalph (biến chuỗi) thành chữ viết thường CHUYỂN DẠNG DỮ LIỆU TỪ RỘNG SANG DÀI VÀ NGƯỢC LẠI Ví dụ 1: famid faminc96 faminc97 faminc98 75000 76000 77000 40000 40500 41000 45000 45400 45800 This is called a wide format since the years of data are wide We may want the data to be long, where each year of data is in a separate observation The reshape command can accomplish this, as shown below reshape long faminc, i(famid) j(year) (note: j = 96 97 98) Data wide -> long Number of obs -> Number of variables -> j variable (3 values) -> year xij variables: faminc96 faminc97 faminc98 -> faminc The list command shows that the data are now in long form, where each year is represented as its own observation list famid 1 year 96 faminc 40000 97 40500 98 41000 96 45000 97 45400 98 45800 96 75000 97 76000 98 77000 Let's look at the wide format and contrast it with the long format The reshape wide command puts the data back into wide format We then list out the wide file reshape wide (note: j = 96 97 98) Data long -> wide Number of obs -> Number of variables j variable (3 values) -> year -> (dropped) xij variables: faminc -> faminc96 faminc97 faminc98 list famid faminc96 faminc97 faminc98 1 40000 40500 41000 2 45000 45400 45800 3 75000 76000 77000 The reshape long command puts the data back into long format We then list out the long file reshape long (note: j = 96 97 98) Data wide -> long Number of obs -> Number of variables -> j variable (3 values) -> year xij variables: faminc96 faminc97 faminc98 -> faminc list famid year faminc 1 96 40000 97 40500 98 41000 96 45000 97 45400 98 45800 96 75000 97 76000 98 77000 Now let's look at the pieces of the original reshape command reshape long faminc, i(famid) j(year) long tells reshape that we want to go from wide to long faminc tells Stata that the stem of the variable to be converted from wide to long is faminc i(famid) option tells reshape that famid is the unique identifier for records in their wide format j(year) tells reshape that the suffix of faminc (i.e., 96 97 98) should be placed in a variable called year TẠO NHÃN CHO BỘ SỐ LIỆU – BIẾN – GIÁ TRỊ CỦA BIẾN label data "nghien cuu ve suy nhuoc o phu nu" Đặt tên cho liệu “nghien cu ve suy nhuoc o phu nu” label variable iq chisoIQ Tạo nhãn chisoIQ cho biến iq label variable dose Loại bỏ nhãn biến dose label define mucdo khong nhe trungbinh nang label value anxiety mucdo Tạo nhãn giá trị có tên mucdo với giá trị 1=khong 2=nhe, 3=trungbinh, 4= nang Gán nhãn giá trị cho biến anxiety label values sex Bỏ nhãn sex label variable dose Bỏ nhãn giá trị biến dose TẠO BIẾN PHÂN LOẠI/THỨ TỰ MỚI tabulate type, gen(type) Province, | territory | or nation | Freq Percent Cum + Province | 10 76.92 76.92 Territory | 15.38 92.31 Nation | 7.69 100.00 + Total | 13 100.00 list place type type1 type2 type3 + -+ | place type type1 type2 type3 | | -| | Canada Nation 0 | | Newfoundland Province 0 | | Prince Edward Island Province 0 | | Nova Scotia Province 0 | | New Brunswick Province 0 | | -| | Quebec Province 0 | | Ontario Province 0 | | Manitoba Province 0 | | Saskatchewan Province 0 | 10 | Alberta Province 0 | | -| 11 | British Columbia Province 0 | 12 | Yukon Territory | 13 | Northwest Territories Territory | + -+ Tạo biến type1, type2, type3 biến dummy (hai giá trị 1) từ biến type gồm giá trị Province, Territory Nation gen unemp2 = if unemp < 12.26 (7 missing values generated) replace unemp2 =1 if unemp >= 12.26 & unemp < (5 real changes made) Tạo biến phân loại unemp2 với giá trị unemp < 12.26 unemp >= 12.26 Ở giá trị (.) Stata mặc định giá trị lớn phải quy định unemp < để loại giá trị gen unemp3= autocode(unemp, 3, 5, 20) (2 missing values generated) list place unemp unemp2 unemp3 + -+ | place unemp unemp2 unemp3 | | -| | Newfoundland 19.6 20 | | Prince Edward Island 19.1 20 | | Nova Scotia 13.9 15 | | New Brunswick 13.8 15 | | Quebec 13.2 15 | | -| | Ontario 9.3 10 | | Manitoba 8.5 10 | | Saskatchewan 10 | | Alberta 8.4 10 | 10 | British Columbia 9.8 10 | | -| 11 | Yukon | 12 | Northwest Territories Tạo biến thứ tự unemp3 với nhóm có khoảng giá trị biến unemp từ đến 20 Ba nhóm nhóm 10, 15, 20 drop if unemp >= (2 observations deleted) sort unemp gen unemp5 = group(5) list place unemp unemp2 unemp3 unemp5 + -+ | place unemp unemp2 unemp3 unemp5 | | -| | Saskatchewan 10 | | Alberta 8.4 10 | | Manitoba 8.5 10 | | Ontario 9.3 10 | | British Columbia 9.8 10 | | -| | Quebec 13.2 15 | | New Brunswick 13.8 15 | | Nova Scotia 13.9 15 | | Prince Edward Island 19.1 20 | 19.6 20 10 | Newfoundland Đối với biến số khơng có giá trị mất, để tạo biến thứ tự dùng hàm group Group (5): tạo nhóm với khoảng cách giá trị NHẬP- XUẤT TẬP TIN SỐ LIỆU Nhập số liệu trực tiếp input id sex age adm 25 Nhập biến id, sex age adm biến số Nhập tập tin có raw Chúng ta có tập tin đuôi raw sau "AMC Concord" 22 2930 "AMC Pacer" 3350 "AMC Spirit" 17 22 "Buick Century" "Buick Electra" infile 4099 4749 2640 20 3250 15 4080 str20 3799 make 4816 7827 mpg weight price using "D:\Arnaud\teaching\year 2005_06\Stata\data\Lecture 1\auto2.raw",clear Cần lưu ý biến biến chuỗi Tuy nhiên để Stata hiểu biến kiểu chuỗi cần xác định biến chuỗi số ký tự nhó Vì cần sử dụng str20 nghĩa chuỗi 20 ký tự Chúng ta có tập tin auto3.raw sau 2229304099 1733504749 2226403799 2032504816 1540807827 infix mpg 1-2 weight 3-6 price 2005_06\Stata\data\Lecture 1\auto3.raw",clear 7-10 using "D:\Arnaud\teaching\year Nếu giá trị quan sát trình bày hai hay nhiều dịng tập tin auto4.raw AMC Concord 2229304099 AMC Pacer 1733504749 AMC Spirit 2226403799 Buick Century 2032504816 Buick Electra 1540807827 infix lines 1: str make 1-20 2: mpg 1-2 weight 3-6 price 7-10 using "D:\Arnaud\teaching\year 2005_06\Stata\data\Lecture 1\auto4.raw",clear Trong trường hợp tập tin có nhiều biến, làm trực tiếp mà phải tạo tập tin định nghĩa có dct Khi Stata hiểu tập tin số liệu nhập vào infix dictionary 1\auto4.raw",clear { lines 1: str make 1-20 2: mpg 1-2 weight 3-6 price 7-10 } infix using mydic.dct using "D:\Arnaud\teaching\year 2005_06\Stata\data\Lecture Xuất tập tin khác sang dta Sau xử lý xong tập tin ASCII, xuất tập tin dạng tập tin Stata hay dạng tập tin ASCII trở lại save D:\Arnaud\teaching\year 2005_06\Stata\data\Lecture 1\auto4.dta outsheet D:\Arnaud\teaching\year 2005_06\Stata\data\Lecture 1\auto4.raw, replace outfile D:\Arnaud\teaching\year 2005_06\Stata\data\Lecture 1\auto4.raw, replace ... TIN SỐ LIỆU Nối tập tin số liệu (append data) Nối tập tin số liệu nối hai file có biến khác số quan sát để tạo thành tập tin Nguyên tắc nối tập tin số liệu sau: - before merge Bộ số liệu ... dataset out to a new file Ghép tập tin số liệu (merge data) Ghép tập tin số liệu nghĩa ghép biến số quan sát từ hai hay nhiều tập tin số liệu với Ghép tập tin số liệu thường sử dụng nghiên cứu theo... + Ở trên, liệu chuỗi date định dạng day, month, year với khơng có ký tự ngăn cách thành phần date Tuy nhiên Stata xử lý nhiều dạng định dạng có ký tự ngăn cách Ví dụ liệu có dạng “20-jan-2007”,

Ngày đăng: 01/09/2021, 21:45

Mục lục

  • Converting Strings to Dates

  • Converting Numbers to Dates

  • Complete Do File

    • Ví dụ 1:

Tài liệu cùng người dùng

Tài liệu liên quan