KTL cơ bảnXử lý dữ liệu

Thực hành định dạng dữ liệu ngày

Chuỗi sang định dạng ngày và biến đổi qua lại các tần suất trên Stata

Các dữ liệu sao chép từ internet hoặc nhập (import) từ các dữ liệu CSV hay các nguồn khác vào Stata sẽ được ghi lại ngày dưới dạng biến chuỗi, được hiển thị bằng màu đỏ. Khi thao tác xử lý với các dữ liệu thời gian hoặc dữ liệu bảng thì đầu tiên chúng ta phải khai báo dữ liệu. Vì vậy, rất cần thiết phải chuyển đổi định dạng chuỗi ngày thành định dạng ngày trên Stata. Phần nội dung bên dưới sẽ hướng dẫn thực hiện cách chuyển đổi dữ liệu ngày ở định dạng chuỗi sang định dạng ngày và biến đổi qua lại giữa các tần suất trong kiểu định dạng ngày tháng trên Stata.

Hướng dẫn định dạng ngày tháng trên Stata
Dữ liệu ngày bị lỗi khi import hoặc copy vào Stata. Làm thế nào để chuyển dữ liệu ngày dạng chuỗi sang định dạng ngày trên Stata, cũng như chuyển đổi từ ngày sang tuần, tháng, năm, quý hoặc qua lại giữa các tần suất trên. Bài viết sẽ hướng dẫn cách chuyển dữ liệu dạng chuỗi qua định dạng ngày trên Stata cũng như chuyển đổi qua lại giữa các tần suất.

Đầu tiên là cách biến đổi dữ liệu dạng chuỗi sang định dạng ngày tháng trên Stata.

Ở bảng bên dưới, cột thứ nhất hiển thị các định dạng ngày với các kiểu hiển thị khác nhau. Cột thứ hai cách thức chuyển chuỗi ngày thành định dạng ngày tương ứng. Cột thứ 3 cho biết kết quả được đọc (hiểu) bởi Stata, bằng cách sử dụng tùy chọn %td trong câu lệnh format, ví dụ, format mydate %td

Chuyển dữ liệu chuỗi về định dạng ngày

Chuỗi nhậpCâu lệnhKết quả
15-1-2015
gen mydate=date(text, "DMY")
15feb2015
15/1/2015
gen mydate=date(text, "DMY")
15feb2015
2015/1/15
gen mydate=date(text, "YMD")
15feb2015
201502
gen mydate=date(text, "MY")
1feb2015
1/15/08
gen mydate=date(text,"MDY",1999)
15jan1908
1/15/08
gen mydate=date(text,"MDY",2019)
15jan2008
1/15/51
gen mydate=date(text,"MDY",2000)
15jan1951
1/15/01
gen mydate=date(text,"MDY",2050)
15jan2001
1/15/00
gen mydate=date(text,"MDY",2050)
15jan2000
20060125
gen mydate=date(text, "YMD")
25jan2006
060125
gen mydate=date(text, "20YMD")
25jan2006

Ví dụ chuyển dữ liệu chuỗi về định dạng ngày

* Nhập dữ liệu mẫu
clear
input str9 text
"15/1/2015"
end

* Chuyển các biến ngày dạng chuỗi sang dạng ngày trên Stata
gen mydate=date(text, "DMY")

* Thay đổi định dạng
format mydate %td

Chuyển dữ liệu theo ngày về tuần, tháng, quý và năm

Bên cạnh chuyển các ngày ở định dạng chuỗi sang định dạng ngày tháng, thì việc chuyển định dạng ngày sang các tần suất cao hơn như tuần, tháng, quý hoặc năm cũng được sử dụng phổ biến. Bảng sau tổng hợp các câu lệnh để chuyển từ định dạng ngày sang tuần, tháng, quý và năm.

Từ ngày sang Câu lệnh
Tuần
gen weekly_date = wofd(daily_date)
Tháng
gen monthly_date = mofd(daily_date)
Quý
gen qyarterly_date = qofd(daily_date)
Năm
gen year = year(daily_date)

Ví dụ chuyển định dạng ngày về tuần/tháng/quý và năm

* Nhập dữ liệu
clear
input str9 text
"15/1/2015"
end

* Chuyển định dạng chuỗi sang ngày
gen daily_date=date(text, "DMY")
format daily_date %td


* Dữ liệu theo tuần
gen weekly_date = wofd(daily_date)
format weekly_date %tw

* Dữ liệu theo tháng
gen monthly_date = mofd(daily_date)
format monthly_date %tm

* Dữ liệu theo quý
gen quarterly_date = qofd(daily_date)
format quarterly_date %tq

* Dữ liệu theo năm
gen year = year(daily_date)

Chuyển qua lại giữa các tần suất

Bạn cũng có thể chuyển đổi qua lại giữa các tần suất của một chuỗi thời gian theo định dạng. Chẳng hạn, bạn có thể chuyển dữ liệu từ tuần sang tháng, tháng sang quý, quý sang năm hoặc ngược lại từ quý sang tháng, quý sang tuần… Bảng bên dưới tổng hợp một số câu lệnh chuyển đổi qua lại giữa các tần suất trong một chuỗi dữ liệu thời gian.

Chuyển từĐịnh dạngCâu lệnh
Tuần sang Tháng
2018w46
gen monthly_date = dofm(dofw(given_date))
Tháng sang Tuần
2018m11
gen weekly_date = dofw(dofm(given_date))
Quý sang Tháng
2018q4
gen monthly_date = dofm(dofq(given_date))
Tháng sang Quý
2018m11
gen quarterly_date = qofd(dofm(given_date))
Tuần sang Quý
2018w46
gen quarterly_date = qofd(dofw(given_date))
Quý sang Tuần
2018q4
gen weekly_date = dofw(dofq(given_date))

Chuyển dữ liệu dạng số sang định dạng Stata

Dữ liệu ngày tháng dạng số cũng thường gặp ở các dạng như 20191107, 20190502… Tuy nhiên, Stata không xem đây là định dạng ngày tháng mà là một định dạng số chứ thông thường. Để chuyển định dạng ngày tháng dạng số này về định dạng Stata để khai báo trong các dữ liệu bảng, dữ liệu thời gian thì chúng ta có thể sử dụng lệnh tostring. Câu lệnh tostring này sẽ chuyển dạng số trên thành dạng chuỗi. Sau đó, áp dụng cách chuyển dạng chuỗi thành định dạng Stata đã trình bày ở trên. Bên dưới là minh họa cho trường hợp một chuỗi số theo định dạng YMD (năm, tháng, ngày)

tostring date, gen(datevar)
gen date2 = date(datevar, "YMD")
format date2 %td

Diễn giải quá trình chuyển dữ liệu số sang dạng ngày tháng trên Stata

  • Câu lệnh 1, hàm tostring sẽ tạo một biến datevar dạng chuỗi từ biến date dạng số ban đầu.
  • Câu lệnh 2 sử dụng hàm date để tạo một biến ngày date2 theo định dạng từ biến datevar. Thiết lập “YMD” cho biết trật tự của năm tháng ngày trong biến chuỗi datevar.
  • Câu lệnh 3 để định dạng biến ngày date2 vừa được tạo để người sử dụng dễ đọc hơn.

Nguồn: https://fintechprofessor.com

Xem thêm
Back to top button