以之前的資料(clean.patients)為例,如果我們要識別字元型變數比如gender等是否有效,以及列出不合要求的資料,我們可以有以下幾種選擇。
1.data step
title "listing of invalid patient numbers and data values";
data _null_; /*空資料集,提高效率*/
set clean.patients;
if gender not in ('f' 'm' ' ') then put patno= gender=; /*核查gender變數*/
if verify(trim(dx),'0123456789') and not missing(dx)
then put patno= dx=; /*verify用於返回屬於trim(dx)而屬於後面字串的字元位置*/
/*這裡等價於sas 9中得到if notdigit(trim(dx)) and not missing*/
if ae not in ('0' '1' ' ') then put patno= ae=; /*核實變數ae*/
run;
2.條件語句where
title "listing of invalid character values";
proc print data=clean.patients;
where gender not in ('m' 'f' ' ') or
notdigit(trim(dx)) and not missing(dx) or
ae not in ('0' '1' ' ');
id patno;
var gender dx ae;
run;
3.設定格式標籤format語句
proc format;
value $gender 'f','m' = 'valid'
' ' = 'missing'
other = 'miscoded';
value $ae '0','1' = 'valid'
' ' = 'missing'
other = 'miscoded';
run;
title "listing of invalid patient numbers and data values";
data _null_;
set clean.patients(keep=patno gender ae);
if put(gender,$gender.) = 'miscoded' then put patno= gender=;
if put(ae,$ae.) = 'miscoded' then put patno= ae=;
run;
另外我們需要對這些無效的資料進行處理,可以刪除這些資料也可以選擇保留:
1.將無效資料設為缺失可以利用設定自定義格式標籤的方法,將無效資料設定為缺失
proc format;
invalue $gen 'f','m' = _same_ /*_same_系統儲存變數,變數名包括等號左邊的*/
other = ' ';
invalue $ae '0','1' = _same_
other = ' ';
run;
data clean.patients_filtered;
infile "c:/books/clean/patients.txt" truncover; /*該檔案以文字形式存在*/
input @1 patno $3.
@4 gender $gen1.
@27 ae $ae1.;
label patno = "patient number"
gender = "gender"
ae = "adverse event?";
run;
title "listing of data set patients_filtered";
proc print data=clean.patients_filtered;
var patno gender ae;
run;
2.保留無效資料,利用input函式,注意不是input語句。這種方法可以直接對sas資料集操作。
proc format;
invalue $gender 'f','m' = _same_
other = 'error';
invalue $ae '0','1' = _same_
other = 'error';
run;
title "listing of invalid character values";
data _null_;
file print; /*輸出到視窗*/
set clean.patients; /*clean庫中已存在資料patients*/
if input (gender,$gender.) = 'error' then /*input函式建立變數gender,格式gender.*/
put @1 "error for gender for patient:" patno" value is " gender;
if input (ae,$ae.) = 'error' then
put @1 "error for ae for patient:" patno" value is " ae;
run;
參考文獻《cody's data cleaning techniques using sas》
XML十六進製制無效字元的處理
xml十六進製制無效字元的處理 在對生成的xml檔案進行xsd驗證時。提示 xml 十六進製制值是無效的字元 請看如下截圖,如果出現這樣的文字 比如ascii列印字元等不可見字元 而且這種字元即時使用cdatd也還是報錯的,所以必須使用替換的方式來實現,收集的網上 不做具體的研究,如果你也碰到了。請...
MySQL無效資料的約束
在mysql 5.0.2之前,mysql對非法或不當值並不嚴厲,而且為了資料輸入還會強制將它們變為合法值。在mysql 5.0.2和更高版本中,保留了以前的預設行為,但你可以為不良值選擇更傳統的處理方法,從而使得伺服器能夠拒絕並放棄出現不良值的語句。本節介紹了mysql的預設行為 寬大行為 新的嚴格...
listview點選無效的處理方法 推薦
android的listview,當item裡面有可點選的元素,比如說checkbox,焦點就會給了checkbox,點選item就無效了。解決方法是在item的xml裡面,最外層,新增 android descendantfocusability blocksdescendants 就可以了。以上...