特魯克文翻譯翻譯社

   weekday(d_date): 禮拜幾翻譯社 1. 日曜日, 7. 星期六  

                     [SAS] 隨機抽樣, 若何從一個資料集中隨機掏出 N 個樣本?

8. 其他函數

            軟體破解入門

                     [IML][SAS] 算移動平均數5期

dhms(d_date,t_hour翻譯社 t_minute, t_second); *造出一 SAS日期+時候變數;
d_date: sas日期.

其他日誌:

_N_ : 內部變數, 可指出今朝正在處置的行數(ith row).

6. 日期變換

sas_T=hms(t_hour, t_minute, t_second); *造出一 SAS 時候;
從SAS T 變數值取回, 小時翻譯社 分鐘, 秒.
thour=hour(sas_t);
tminute=minute(sas_t);
tsecond=second(sas_t);

  if _N_ > 5 then delete; /* 只留下前5 筆 */

 

  set data d;

ex:   dd=mdy(10,20, 2014); // 2014, 10 月, 20 日

 

data bx;

從SAS日期取回 年月日

如需要數字時間, 請參考上面的日期例子, 一樣方法定義便可.

                     [Data Step] 掏出分組最大值, 最小值, 總和翻譯社 平均數, 標準差及各分組各有若幹筆 ?

如買賣時間. 13:45:12
sas_t=hms(13:45,12);

                     [Data Step][Sas] 完全研究 DATA STEP - 2 : merge翻譯社 first last var

  find(); 
    i=find("ABCD,DEF",'翻譯社'); * i 會等於 5, 第5 個字泛起 ','  ;
    以下的例子可以將字串依朋分符號拆開成數個字串
    length zz $11; * 先將字串設成長度11 以容納以後的處理;
    zz="ABCD,DEF翻譯社P1"; /* 界說字串 */
    i=find(zz,','); * 找分隔符號 , 的位置;
    lenzz=length(zz); * 拿出字串的長度;
    aa= substr(zz,1,i-1); * 依分隔符號 , 的位置i翻譯社 掏出 ABCD;
    tail=substr(zz翻譯社i+1翻譯社 lenzz-i); * 依分隔符號 , 的位置i翻譯社 剩下未處置的字串 DEF,P1;
    j=find(tail翻譯社 ','); * j=4;
    bb= substr(tail,1,j-1); *掏出 DEF;
    cc=substr(tail,j+1翻譯社 lenzz-j);    *掏出 P1;
    /* aa=ABCD翻譯社 bb=DEF, cc=P1 */
    另外一個例子: 從日期字期掏出年代日
    '1990/1/30' ; 依上述方式便可掏出

                     [SQL] 取出上一筆買賣時候, 與本次交易的距離

  vvaluex(); ;將變數名稱翻譯社 依格局轉成 可見字串
    name_dd='dd'; * 把變數名稱換成字串;
    ddd2=vvaluex(name_dd); * 有 interpreter 的意思, 由字串(name_dd)中的名字掏出依格局印出之字串;

  scan()  

 

                     [Cartesian product] 合併相關概念, 資料庫, sql,

d_date= MDY( mod(int(date/100),100) , mod(date翻譯社100) 翻譯社 int(date/10000) );
dlast = intnx('month',d_date,1)-1; /*本月最後一天 */
dayA=day(d_date);
d_pre3month=intnx('month'翻譯社d_date,-3)+dayA


  Substr() ; 取子字串
     X="19901206";
     d_Year=substr(X,1翻譯社4); /* get 1990, 從第一個字, 取4個字 */
     d_month=substr(X翻譯社5,2); /* get 12, 從第5個字, 取2個字 */   
     d_day=substr(X,7,2); /* get 06 *翻譯社  從第7個字, 取2個字 */
    dd=mdy(input(d_month,12.),input(d_day,12.)翻譯社 input(d_year翻譯社12.)); * create SAS date dd;
    format dd yymmdd10.; /* set display format for var dd yymmdd10. -> 1990-12-06. yymmdd8. -> 90-12-06 */


  trim() ; 去掉後面的空白字
   Y=" ABC "; *前後都有空白字;
   Y1="ZZZ";
   Y2=Y||Y1; 
   yy2=trim(Y)||Y1;
  substrn()
length

  length()
    str="ABC";
    I=length(str); * 字串的長度, i=3 , 雖然用attributes看str 是$4;

  lengthn() 
  str=""; /* 空字串 */
  I2=length(str); * I2=1;
  I3=lengthn(str); * I3=0;

  vvalue() ;將變數名稱翻譯社 依格式轉成 可見字串 
      format dd yymmdd10.;
     X=vvalue(dd); /* 日期dd 依 format 轉成字串放到 X 變數 */ 
     put(X); 
   

                     [SQL] 若何取出分組最大值, 最小值, 總和, 平均數翻譯社 及各分組各有多少筆 

5. data processing step
DATA xxx; //輕易找到資料, 就不具體申明了. 

d_date= MDY( mod(int(ndate/100)翻譯社100)   , mod(ndate,100) , int(ndate/10000) ); * input ndate 數字日期;

ID Year Month First.year First.month
A 1990 3 Yes Yes
A 1990 6 No Yes
A 1991 1 Yes Yes
A 1991 1 No No
A 1991 2 No Yes
A 1992 2 No No
A 1992 3 No Yes
A 1992 3 No No
A 1992 3 No No

 

run;

 以下是一個例子翻譯社 by ID year Month, 請考察 Yes 的位置

##數字日期 SAS 日期 : 19980329

 

 

##字串日期 轉 SAS 日期 :

可能許多人都不是很清楚, first 跟 BY A B C 的關係, 是以用下面的Table 當例子. 可以清晰知道 first 成立的row.

見 4. substr(), find() 的例子

data az2;
set a;
X=input(volx,12.); * vol 為數字->正確使用;
Y=input (volx, date8.); * volx為文字. 毛病利用 ;
Z=input ("19990102"翻譯社 date8.); *. 錯誤利用 ;
dd= MDY(12,11翻譯社2014); * 建立SAS 日期翻譯社 為2014 年, 12月 11日;
length xx $8;
XX=cats(year(dd), month(dd), day(dd)); *將SAS 日期換為字串 /正確利用;
XXX=input(dd翻譯社 date8.);
a='26oct02'd; * 定義一日期變數;;
a2='26oct02'; *定義為一字串;
format X1 date9.;
X1=input(a2,date9.); /* 用日期9 格式顯示 ;
X2=input(a2,date9.); * 用日期數字顯示 (SAS 界說的數字 19600101 為0);
run;

4. 文字function, 字串處置懲罰

  用 || ,   X="a" ||"XYZ" ||"PPPP"; * --> X=aXYZpppp;
  cat(a, b, n翻譯社 c); /* 文數字都可以參數, 數字前會有空白 */;
  catt = catt(a, b, n翻譯社 c); /* 文數字都可以參數翻譯社 數字前不會留空白 */;
  cats = cats(a翻譯社 b, n翻譯社 c); /* 文數字都可以參數, 所有空白主動拿掉 */;
  catx = catx(',', a, b, n, c); /* 第一個參數為分隔符號(字串)翻譯社 文數字都可以參數, leading 空白自動拿掉 */;

 

 

建立SAS日期: MDY(month, day翻譯社 year);

7. 時候

/*=========================;
proc print data=az1;
run;

//=================================
3. 文字轉數字
  X=input (MM翻譯社 date9.);  * MM為文字 ;
  Y=input(MM,12.); *數字;
  格局:
  yymmdd6.; 日期6 格式
  best5. ; 數字5 格式,
  z5. : 數字前用補0暗示
  $3. :

   HOLIDAY( 'holiday'翻譯社 year )

data a;
set d;

data az1;
set d;
format num1 z5.; /* 5 ditital 未滿補0 */
num1=vol; /* 第一筆num1="00010" */
run;

                     SAS input, infile翻譯社 dlm翻譯社 DSD翻譯社 missover, @@ 的使用法, EXpand,:未收拾整頓

                     SAS PROC SQL : 經常使用SQL指令及寫法.

                     SAS programming 雜項 DATA SORT MERGE : 未清算

data d;

retain sum;
if (first.id) then sum=0; /* 各組第一筆先將sum 清成0 翻譯社 以便相加 *;
sum=sum+vol;
by ID; /* 以 ID 分組 */
run;

我的相關文章: 

 

日期花樣:

1. 數字轉文字.

    YYQ( year, quarter ); return 年季

retain 利用

                     [SAS 問題集常見問題]: 

input id name$ vol ;

    myear=year(dd);

日期變數申明:
  因為在SAS內部要比較益處理, 所以日期會轉換為SAS內部的數字,
可當作流水號翻譯社 以1960/1月1 日為0翻譯社 往此刻1 天, 就加1, 往以前一天就減一.
如要做日期對照翻譯社 可以減少較量爭論量, 並加速度.
也是以可以透過 sas 內建function, 以此日期比力輕易獲得禮拜幾, 第幾週翻譯社 第幾季的資訊.

以下我們會以 SAS日期, 數字日期, 及字串日期. 說明例子, 以免弄錯.
SAS日期, 1990/10/12, 12 以best 12 看到: 11242 跟年月日看似無關的數字)
  長處: 可計較翻譯社 (要改display 格局 才都雅好視察)
數字日期: 19801231, (以best 12 看到 就是19801231, 數字型)
  優點: 好看好觀察
字串日期: "1980/12/31"翻譯社 "26oct02", "1999/12/31"翻譯社 "1999/3/6"翻譯社 "1999/03/06" (字串 型, 可能會有隨便格局)
  若有各類寫法. 欠好處理.

辨識方法. 用viewtable翻譯社 在sas的檔案總管翻譯社 開啟資料檔, 在最上面的欄位名稱(double click)或按下滑鼠右鍵選column attributes, 將 format 選成best 12.
# informat; 內部格式 , $8 : ex:字串, 長度8翻譯社
# format:display 顯示花式,
如上例: infomat: 12. 如數值為14242,
format : best12. 看到是14242,
format : yymmdd. , 看到是 90-10-12  

   X=put(vol, 12.); /* 將 VOL 以12. 格局轉換為 字串 */
2. 界說變數格式.
  length   : 界說長度
  例:

ndate=year(d_date) *10000+ month(d_date) *100 + day(d_date); * d_date SAS 日期;

   QTR( d_date ) ; 第幾季

//==========================================//

b. FIRST.var翻譯社 LAST.var, 分組 統計用

    mmonth=month(dd);

cards;

 

data a; /* 資料 a */
  set d; /* 利用 data d */
  length n $6; /* 設定新變數 n 為長度6 的字串 */
  n=cats("0",put(name,12.)); /* cat 可以將二個字串, 合併串成一字串, 這邊誤用 put翻譯社 put 內容應為 數 */
  nt=cats("0",name); /* 將 0, 與 name 變數串成新的字串變數 nt翻譯社 因未指定 length 為內部指定,,在天成翻譯公司的情況是長度200 */
  length volx $10; /* 界說一新的變數欄位 volx, 長度為10. */
  volx=cats("123", vol); * 將123字串與原來的數字("10")合併為新字串翻譯社 例第一筆會變為 "12310" ;
XXX= put(vol, 11.); /* 將 VOL 以11. 格式轉換為 字串, length 為11 */
run;

    TODAY() : 今天 sas_date

a. summation: retain 可以用來算 sum=sum + vol;


根據接下來翻譯公司要對日期若何處理, 做選擇.
有時你拿到的資料檔是他人供給的, 這時候最好先做轉換翻譯社SAS 日期, 或是 數字日期
這二種對計較比較是比較好的花樣. 

ex: 例子

要搭配 by 分組

                     [Data Step][Sas] 徹底研究 DATA STEP 運作道理及觀念

##SAS 日期 轉 數字日期: 19980329

1 AABBCCDD 10
1 A 12
1 A 9
1 A 3
2 B 4
2 B 5
2 B 6
2 B 7
8 C 1
8 C 1
8 C 1
;

data a;
  set d;

                     SAS Proc IML sample- IML: matrix 矩陣較量爭論處理語言

##日期較量爭論, 取出3個月前的日期: 如 1999/05/20 --> 1999/05/21

/* 先建立一個測試用的 data set翻譯社 以下以此當例子 */ *以下的例子片斷都可以copy 到 data a 那段程式中翻譯社 run 之前, 即可以嘗試及跑出效果;
run;

    mday=day(dd);

EX: //同上, 同一組互異做加總

  retain sum; /* sum 的結果可以往下一筆傳 */
if (sum=.) then sum=0; /* initial variable : 第一筆進來時, 內定值為 . *;
  sum=sum+vol; /* 累加 *;
run;

/* ======================*/

 -----

    DHMS( date翻譯社 hour翻譯社 minute, second ) 



本篇文章引用自此: https://blog.xuite.net/bbearh/wretch/139246688-SAS+%E6%96%87%E5%AD%97%E6%95%B8%E5%AD%97%E4%BA%92%E8%有關各國語文翻譯公證的問題歡迎諮詢天成翻譯公司02-77260931

文章標籤
全站熱搜
創作者介紹
創作者 chavezw15462 的頭像
chavezw15462

chavezw15462@outlook.com

chavezw15462 發表在 痞客邦 留言(0) 人氣(623)