Stata 資料清理 csv檔案
進行資料處理時,經常會發現兩件事情:
1. 把原始資料導入Stata但產生亂碼,需要更改encoding。
2. 資料格式不一致,需要更改成wide或是long format
我想要合併台灣縣市的各種人口數據資料,我從主計處下載csv之後,
發現資料的格式是wide檔案,
其中底下還有許多附錄,所以我先透過excel整理一下這些檔案,
讓它們變成下面這個樣子,並存成csv檔案
待我處理好之後,便可以透過Stata的loop command來處理這幾個步驟的:
a. 把很多csv檔案變成dta檔案
*用csv會比較簡單處理,xls通常會有"附註"、空格等多餘的東西,如果要用xls, 要記得先把這些不需要的資料刪掉。
b. 從wide轉成long資料格式
*記得在excel先把年份1990 1991 1992...更改成y1990 y1991 y1992...
或是其他重複的單字,例如a b c....
c. 合併
以下是do file:
local csv 扶養比 人口密度 中低收入老人生活津貼與老年農民福利津貼核付人數占老年人口比率 中低收入老人生活津貼核定人數 公教
foreach var of local csv{
clear
import delimited "`var'.csv", varnames(1) encoding(UTF-8)
*varnames(1) ,將第一列視作變數名稱
*encoding(UTF-8) 更改encoding,避免出現亂碼
reshape long y , i(county) j(year)
*reshape long 有一列同樣開頭的變數串 , i(unique identifier) j(新變數名稱)
*unique identifier 所以stata可以知道你y是用甚麼為基礎單位。
drop `var'
rename y `var'
sort county year
save `var'.dta,replace
}
use 扶養比.dta,clear
local csv_1 人口密度 老年人口比 中低收入老人生活津貼與老年農民福利津貼核付人數占老年人口比率 中低收入老人生活津貼核定人數 公教
foreach var of local csv_1{
merge 1:1 county year using "`var'.dta"
drop _merge
save "county_features.dta",replace
}
Comments
Post a Comment