日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

SAS学习︱逻辑库、数据集创建与查看、数据库链接(SAS与R的code对照)

發布時間:2023/12/2 数据库 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SAS学习︱逻辑库、数据集创建与查看、数据库链接(SAS与R的code对照) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、邏輯庫、數據集、數據字典

數據字典>邏輯庫>數據集

邏輯庫=工作空間,存儲四類內容,test是數據集文件,views是視圖(相當于R里面的views點擊查看),formats代表文件,sasmacr代表目錄內容。

數據集,包括數據文件+SAS視圖,可以像R中雙擊獲取數據結構圖表,不過這樣效率較低,可以使用其他方法,譬如數據字典的方式describe view,詳細內容見三、數據查看。

數據字典,是當年進程中所有內容的邏輯庫、數據表的一個平鋪、列出來。所以,在全局檢索上十分有效。我覺得這個非常有用,不過貌似網上對其的定義比較少。


[html]?view plaincopy print?
  • libname?fv?"F:\SAS\SAS?9.4?space";??????/*fv是數據庫名字*/??
  • data?fv.forever;????/*??#forever代表在fv下的forever數據集*/??
  • Input?x?y?z;??
  • Cards;???????????????
  • 1?2?3??
  • 4?5?6??
  • ;??
  • run;??

  • code解讀:

    libname建立邏輯庫,相當于R中的workspace中的一個文件夾;

    data代表數據表格,data.frame;

    與R數據輸入不同的是,數據之間不是用逗號,而是空格來進行分割。


    1、關于libname

    如果,沒有libname步驟,直接,data,那么就默認存放在SAS中的默認邏輯庫之中,默認邏輯庫名字叫“work”。

    [html]?view plaincopy print?
  • libname?lb?clear;???????#刪除??
  • 代表刪除libname

    2、關于數據字典

    本節參考海納百川BLOG的:SAS數據字典訪問

    訪問數據字典方法如下:

    1.直接用SQL語句訪問Dictionary table
    2.訪問SAShelp View

    表名

    包含信息

    視圖名

    DICTIONARY.CATALOGS

    SAS目錄冊及所包含的條目

    SASHELP.VCATALG

    DICTIONARY.COLUMNS

    列(或變量)及其特征

    SASHELP.VCOLUMN

    DICTIONARY.DICTIONARIES

    所有表詞典

    SASHELP.VDCTNRY

    DICTIONARY.EXTFILES

    文件標識名和外部文件物理存儲地址

    SASHELP.VEXTFL

    DICTIONARY.INDEXES

    SAS數據集索引

    SASHELP.VINDEX

    DICTIONARY.MEMBERS

    SAS數據集

    SASHELP.VMEMBER

    DICTIONARY.OPTIONS

    目前設定的SAS系統選項

    SASHELP.VOPTION

    DICTIONARY.STYLES

    ODS類型

    SASHELP.VSTYLE

    DICTIONARY.TABLES

    SAS數據文件和視圖

    SASHELP.VTABLE

    DICTIONARY.VIEWS

    SAS數據視圖

    SASHELP.VVIEW

    ?


    [html]?view plaincopy print?
  • /*數據字典把當前SAS環境中的所有內容進行匯總歸類到這個里面,方便檢索*/??
  • proc?sql?flow=10;??
  • title2?'do?the?columns?have?formats,informats,or?labels';??
  • title3?'dictionary.columns';??????????????????????????????????????
  • /*#所有表的列變量*/??
  • create?table?colinf?as??
  • select?name,type,length,label,format,informat????????????????????
  • /*#變量名稱*/??
  • from?dictionary.columns??
  • where?libname='SASHELP'?and?memname='CLASS';??
  • /*#注意要大寫????*/??

  • 打開explorer window,在SASHELP這個library下,以V開頭的視圖實際上是Dictionary table內容的復制。如

    proc sql;describe view sashelp.voption;quit;


    ? ?可以看到voption這個視圖的內容來自dictionary.options。? ?而對于View,除了SQL,直接用data步或proc步都可以訪問。如
    [html]?view plaincopy print?
  • data?test2;??
  • set?sashelp.vcolumn;??
  • where?libname="WORK"?and?memname="TEST";??
  • run;??

  • 或者
    proc contents data=sashelp.voption;
    run;或者在command欄輸入viewtable sashelp.voption。

    ——————————————————————————————————————————


    二、SAS的數據導入與其他平臺接入方式


    SAS獲取數據的幾個方式:外部數據導入、passthrough方式、import方式、input方式。大多通過libname來調入。

    1、數據庫外部接入

    [html]?view plaincopy print?
  • /*#數據庫,外部接入*/??
  • libname?hsdb?db2?user=xxuser?password="xxxx"?datasrc=datadb;??
  • /*??#在邏輯庫hsdb中,db2代表數據庫名稱,datasrc代表SQL中的數據集名稱*/??
  • 還有RODBC訪問。

    [html]?view plaincopy print?
  • /*通過RODBC訪問?需要設置很多內容*/??
  • libname?odb?odbc?user=***?password=***?datasrc=test;??
  • libname?hsdb?odbc?noprompt="uid=xxxuser;pwd=xxxxx;dsn=datadb;"?schema=hsuser??

  • 2、外部導入,spss數據

    [html]?view plaincopy print?
  • /*SPSS數據集,外部接入*/??
  • libname?sps?spss?'';??

  • 3、oracle數據集,外部接入

    [html]?view plaincopy print?
  • /*oracle數據集,外部接入*/??
  • libname?oralib?oracle?user=xxx?pw=xxx?path?dbmssrv?schema=educ;??

  • 4、input方式導入數據


    input里面有很多小符號,譬如@@ 和@的區別,$&。不過,也正是這些符號,讓我覺得... 導個數據也忒費勁了...不過,這個也是數據輸入中最復雜的問題了。。

    關鍵就在這指針問題上,

    @代表指針還在這行,只能罩著下一個input,如果沒有兩個input,那么跟沒有@一樣,直接跳到下一行;接下來一個有,則相當于指針在這行;

    @@代表指針一直在同一行;

    沒有@,代表指針跳到下一行。

    "$",表示字符型變量,&代表數值型。

    [html]?view plaincopy print?
  • data?test;??
  • ????infile?cards?;??
  • ????input?x?@;???????/*單個@,能H住,有效期到下一個input語句*/??
  • ????input?y;???????????/*沒有@,H不住,下一個input語句會去讀新的一行*/??
  • ????input?z?@@;????/*兩個@,H住沒問題,有效期延長到Data步下一圈*/??
  • cards;??
  • 1?2?3??
  • 4?5?6??
  • 7??
  • ;??
  • @只能在輸入數據“1 2 3”之后要換行輸入“4 5 6”才能被識別
    @@可以無視這個,因為其關注“input xxx”,可以直接在cards;后輸入數據“1 2 3 4 5 6”,系統自動識別為兩組數據

    參考百度文庫:

    ——————————————————————————

    兩個都是行控制符(就是SAS閱讀你的數據時,在每一行里面的閱讀數)

    @ ?表示執行下一個操作時,指針移到下一個記錄(也就是下一行)。

    @@表示執行下一個操作,指針保持在當前記錄(當前行)。

    ?

    舉個例子:(數據錄入我使用兩種方式,以便于看出@與@@的閱讀區別)

    ?

    (1):錄入數據時占用一行的空間

    [html]?view plaincopy print?
  • data?a;??
  • ??input?x?y?@;(當僅僅使用一個@時)??
  • ??cards;??
  • ??1?2?3?4?2?2?3?5?3?2?1?1?(數據占用一行空間)??
  • ??;run;??
  • proc?print?data=a;??
  • run;??


  • (閱讀結果如下)

    data a:?(此時SAS僅僅讀了1次,顯然沒有讀完,就跳到下一行閱讀下一個數據,因為下一行沒有數據可讀,所以就讀了一次就完了)

    [html]?view plaincopy print?
  • The?SAS?System?????17:52?Saturday,?October?27,?2014??23??
  • ???????????????????????????????????????Obs????x????y??
  • ????????????????????????????????????????1?????1????2??
  • [html]?view plaincopy print?
  • data?b;??
  • ??input?x?y?@@;??
  • ??cards;??
  • ??1?2?3?4?2?2?3?5?3?2?1?1?(數據占用一行空間)??
  • ??;run;??
  • proc?print?data=b;??
  • run;??


  • (閱讀結果如下)

    [html]?view plaincopy print?
  • data?b(此時SAS讀了6次,顯然這次是正確的,因為使用@@時,數據在當前行連續閱讀)??
  • ????????????The?SAS?System?????17:52?Saturday,?October?27,?2014??24??
  • ?????????????????????????????????????????Obs????x????y??
  • ??????????????????????????????????????????1?????1????2??
  • ??????????????????????????????????????????2?????3????4??
  • ??????????????????????????????????????????3?????2????2??
  • ??????????????????????????????????????????4?????3????5??
  • ??????????????????????????????????????????5?????3????2??
  • ??????????????????????????????????????????6?????1????1??

  • (2):錄入數據時占用多行空間

    [html]?view plaincopy print?
  • data?a;?(當僅僅使用一個@時)??
  • ??input?x?y?@;??
  • ??cards;??1?2?3?4??
  • 2?2?3?5??(數據占用三行空間)??
  • ?????????3?2?1?1??
  • ??;run;??
  • proc?print?data=a;run;??


  • (SAS閱讀情況如下)

    [html]?view plaincopy print?
  • data?a:(此時SAS僅僅讀了3次,顯然沒有讀完,因為每一行沒有連續讀完,就開始閱讀新下一個數據,也就是光標就跳到了下一行)??
  • ?????The?SAS?System?????17:52?Saturday,?October?27,?2014??25??
  • ?????????????????????????????????????????Obs????x????y????????????????????????????????????????????
  • ??????????????????????????????????????????1?????1????2????????????????????????????????????????????
  • ??????????????????????????????????????????2?????2????2????????????????????????????????????????????
  • ??????????????????????????????????????????3?????3????2??????????????

  • ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

    ??????????????????????????????????????????????????????????????????????????????????????????????????????

    [html]?view plaincopy print?
  • data?b;??
  • ??input?x?y?@@;??
  • ??cards;??
  • ??1?2?3?4??
  • ??2?2?3?5??
  • ??3?2?1?1??
  • ??;run;??
  • proc?print?data=b;??
  • run;??


  • (SAS閱讀情況如下)

    [html]?view plaincopy print?
  • data?b;(此時SAS閱讀了6次,顯然這次閱讀的閱讀時正確的,因為每一行都是連續讀取之后再讀取下一記錄,也就是跳到下一行)??
  • ???????????The?SAS?System?????17:52?Saturday,?October?27,?2014??26??
  • ??????????????????????????????????????????????????????????????????????????????????????????????????
  • ?????????????????????????????????????????Obs????x????y????????????????????????????????????????????
  • ??????????????????????????????????????????????????????????????????????????????????????????????????
  • ??????????????????????????????????????????1?????1????2????????????????????????????????????????????
  • ??????????????????????????????????????????2?????3????4????????????????????????????????????????????
  • ??????????????????????????????????????????3?????2????2????????????????????????????????????????????
  • ??????????????????????????????????????????4?????3????5????????????????????????????????????????????
  • ??????????????????????????????????????????5?????3????2????????????????????????????????????????????
  • ??????????????????????????????????????????6?????1????1??????????????

  • ——————————————————————————————————————————


    三、數據查看方式:content/data/proc sql三種方式


    數據查看也有很多方式,譬如content、data/proc sql包括雙擊也是一種方式,一共四種方式。

    1、content方式

    查詢數據的內容(summary) ?針對一些頭文件里面的隱藏數據集,可以用這樣的方式看到,類似summary,不過內容沒有那么詳細。

    [html]?view plaincopy print?
  • proc?contents?data=fv.forever?out=class;run;??

  • out代表將查詢內容打印出來,并存放在臨時邏輯庫work之中。

    2、data方式

    [html]?view plaincopy print?
  • data?class/view=class1;??
  • set?fv.forever??
  • ;??
  • run;??

  • 3、sql方式

    [html]?view plaincopy print?
  • proc?sql;??
  • create?view?class2?as??
  • select*from?fv.forever;??
  • quit; ?
  • 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的SAS学习︱逻辑库、数据集创建与查看、数据库链接(SAS与R的code对照)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。