五月天婷亚洲天久久综合网,婷婷丁香五月激情亚洲综合,久久男人精品女人,麻豆91在线播放

  • <center id="8gusu"></center><rt id="8gusu"></rt>
    <menu id="8gusu"><small id="8gusu"></small></menu>
  • <dd id="8gusu"><s id="8gusu"></s></dd>
    樓主: playmore
    1333 0

    [SAS] SAS基礎宏之6:ChkVarFormat [推廣有獎]

    學科帶頭人

    2%

    還不是VIP/貴賓

    -

    TA的文庫  其他...

    R相關

    經濟學相關

    金融工程

    威望
    1
    論壇幣
    16330 個
    通用積分
    8.5797
    學術水平
    372 點
    熱心指數(shù)
    394 點
    信用等級
    341 點
    經驗
    15297 點
    帖子
    1194
    精華
    1
    在線時間
    1331 小時
    注冊時間
    2007-1-11
    最后登錄
    2023-12-15

    初級學術勛章 初級熱心勛章 中級熱心勛章

    樓主
    playmore 發(fā)表于 2015-3-7 20:15:00 |只看作者 |壇友微信交流群|倒序 |AI寫論文

    +2 論壇幣
    k人 參與回答

    經管之家送您一份

    應屆畢業(yè)生專屬福利!

    求職就業(yè)群
    趙安豆老師微信:zhaoandou666

    經管之家聯(lián)合CDA

    送您一個全額獎學金名額~ !

    感謝您參與論壇問題回答

    經管之家送您兩個論壇幣!

    +2 論壇幣
    宏作用



    用來檢查數(shù)據格式的
    好像SAS沒有判斷日期變量的好辦法,只能看格式是不是DATE9.,YYMMDD之類的了
    如果有其他辦法,記得通知我



    1. %macro ChkVarFormat(SourceTable,InputVar,FlagVarFormat);

    2. /**********************************************************************/
    3. /* 此宏的作用是檢查某數(shù)據表中指定變量的格式,如日期格式YYMMDD10.和字 */
    4. /* 符串格式$40.。其中,SourceTable是原始表格;InputVar是指定的變量, */
    5. /* 若為多個變量,請用空格分隔;FlagVarFormat是標記宏變量名稱,若有多 */
    6. /* 個InputVar變量,則用小數(shù)點分隔。 */
    7. /* */
    8. /* 最終得到的是宏變量&FlagVarFormat。 */
    9. /* */
    10. /* Created on 2012.9.7 */
    11. /* Modified on 2012.9.18 */
    12. /**********************************************************************/

    13. %if %SYSFUNC(FIND(&SourceTable,.)) NE 0 %then %do;
    14. %let CVF_LibName=%UPCASE(%SCAN(&SourceTable,1,.));
    15. %let CVF_MemName=%UPCASE(%SCAN(&SourceTable,2,.));
    16. %end;
    17. %else %do;
    18. %let CVF_LibName=WORK;
    19. %let CVF_MemName=%UPCASE(&SourceTable);
    20. %end;

    21. %ChkDataSet(DataSet=&CVF_LibName..&CVF_MemName,FlagDataSetExists=CVF_FlagDataSetExists);

    22. %if &CVF_FlagDataSetExists EQ 1 %then %do;
    23. %ChkVar(SourceTable=&SourceTable,InputVar=&InputVar,FlagVarExists=CVF_FlagVarExists);

    24. %if %SYSFUNC(FIND(&CVF_FlagVarExists,0)) EQ 0 %then %do;
    25. proc contents data=&SourceTable out=CVF_temp(keep=NAME TYPE FORMAT FORMATL) noprint;
    26. run;

    27. %global &FlagVarFormat;

    28. %if %SYSFUNC(FIND(&InputVar,%STR( ))) NE 0 %then %do;
    29. %SeparateString(InputString=&InputVar,OutputString=CVF);

    30. %do CVF_i=1 %to &CVF_Num;
    31. %let CVF_FlagVarExists&CVF_i=0;

    32. data _null_;
    33. set CVF_temp;
    34. if UPCASE(NAME)=UPCASE("&&CVF_Var&CVF_i.") then do;
    35. call symputx("CVF_FlagVarFormat&CVF_i",FORMAT);
    36. call symputx("CVF_FlagVarFormatL&CVF_i",FORMATL);
    37. end;
    38. run;
    39. %end;

    40. %let &FlagVarFormat=&&CVF_FlagVarFormat1.&&CVF_FlagVarFormatL1;

    41. %do CVF_j=2 %to &CVF_Num;
    42. %let &FlagVarFormat=&&&FlagVarFormat.%STR(.)&&CVF_FlagVarFormat&CVF_j&&CVF_FlagVarFormatL&CVF_j;
    43. %end;
    44. %end;
    45. %else %do;
    46. data _null_;
    47. set CVF_temp;
    48. if UPCASE(NAME)=UPCASE("&InputVar.") then do;
    49. call symputx("CVF_FlagVarFormat",FORMAT);
    50. call symputx("CVF_FlagVarFormatL",FORMATL);
    51. end;
    52. run;

    53. %let &FlagVarFormat=&CVF_FlagVarFormat.&CVF_FlagVarFormatL;
    54. %end;
    55. %end;
    56. %else %do;
    57. %put ERROR: There is no variable named %SCAN(&InputVar,%SYSFUNC(FIND(&CVF_FlagVarExists,0))), please check it again.;
    58. %goto exit;
    59. %end;
    60. %end;
    61. %else %if &CVF_FlagDataSetExists EQ 0 %then %do;
    62. %put ERROR: The DataSet "&SourceTable." does not exist, please check it again.;
    63. %goto exit;
    64. %end;
    65. %else %do;
    66. %put ERROR: There may be something wrong with the macro ChkDataSet, please contact the writer for help.;
    67. %goto exit;
    68. %end;

    69. /* 若要顯示&FlagVarFormat的值,請取消下面的注釋 */
    70. /*%put &FlagVarFormat=&&&FlagVarFormat;*/

    71. /* 刪除不必要的表格 */
    72. proc delete data=CVF_temp;
    73. run;

    74. %exit:
    75. %mend;


    76. %macro Demo();

    77. %let SourceTable=AOQR_DetHoldingsOfFund_Chosen;
    78. %let InputVar=End_Date Fund_Name Fund_Code;
    79. %let FlagVarFormat=FlagVarFormat1;
    80. %ChkVarFormat(&SourceTable,&InputVar,&FlagVarFormat);

    81. %mend;
    復制代碼

    二維碼

    掃碼加我 拉你入群

    請注明:姓名-公司-職位

    以便審核進群資格,未注明則拒絕

    關鍵詞:ChkVarFormat format FORMA sas基礎 Rfor 基礎 基礎宏 SAS ChkVarFormat

    已有 1 人評分經驗 論壇幣 學術水平 熱心指數(shù) 信用等級 收起 理由
    niuniuyiwan + 60 + 60 + 1 + 1 + 1 精彩帖子

    總評分: 經驗 + 60  論壇幣 + 60  學術水平 + 1  熱心指數(shù) + 1  信用等級 + 1   查看全部評分

    playmore邀請您訪問ChinaTeX論壇。!進入ChinaTeX論壇
    您需要登錄后才可以回帖 登錄 | 我要注冊

    本版微信群
    加好友,備注jltj
    拉您入交流群

    京ICP備16021002-2號 京B2-20170662號 京公網安備 11010802022788號 論壇法律顧問:王進律師 知識產權保護聲明   免責及隱私聲明

    GMT+8, 2024-12-23 21:36