我有很多SAS格式的文件,我希望能夠在SAS之外的程序中讀取它們。我除了安裝基本SAS系統外沒有其他任何東西。我可以手動轉換每一個,但我想要一種方法自動執行。如何讀取SAS數據集?
回答
您需要有一個正在運行的SAS會話充當數據服務器。然後您可以使用ODBC訪問SAS數據,請參閱SAS ODBC drivers guide。
爲了獲得本地SAS ODBC服務器上運行,你需要:
- 在SAS ODBC驅動程序指南描述定義你的SAS ODBC服務器設置。在下面的例子中,我將連接到一個名爲「loclodbc」的服務器。
在你的服務文件中添加一個條目,(C:\ WINDOWS \ SYSTEM32 \ DRIVERS \ etc \ services中),就像這樣:
- loclodbc 9191/TCP
...集端口號(這裏是:9191),以便它適合您的本地設置。服務「loclodbc」的名稱必須與ODBC設置中定義的服務器名稱匹配。請注意,術語「服務器」與您的PC的物理主機名無關。
您的SAS ODBC服務器現在可以運行,但沒有可用的分配數據資源。通常情況下,您可以在SAS ODBC設置過程中的「庫」選項卡中設置此選項,但由於您要「即時」指向數據源,因此我們忽略了這一點。
在您的客戶端應用程序中,您現在可以連接到SAS ODBC服務器,指向要訪問的數據資源並獲取數據。
SAS指向數據資源的方式是通過「LIBNAME」的概念。 libname是一個數據集合的邏輯指針。
因此
LIBNAME sasadhoc 'C:\sasdatafolder';
分配的文件夾 「C:\ sasdatafolder」 的邏輯句柄 「sasiodat」。
如果從內部SAS希望獲得居住在SAS數據表文件中的數據「C:\ sasdatafolder \ test.sas7bdat」,你會做這樣的事情:
LIBNAME sasadhoc 'C:\sasdatafolder';
PROC SQL;
CREATE TABLE WORK.test as
SELECT *
FROM sasadhoc.test
;
QUIT;
因此,我們需要要做的是告訴我們的SAS ODBC服務器從我們的客戶端應用程序分配一個libname到C:\ sasdatafolder。我們可以通過使用DBCONINIT參數在啓動時發送此資源分配請求來完成此操作。
我已經做了一些示例代碼。我的示例代碼也是用BASE SAS語言編寫的。由於顯然有更聰明的方法來訪問SAS數據,比SAS通過ODBC連接到SAS,此代碼僅作爲示例。
您應該能夠採取有效位,創造您所使用的編程環境,自己的解決方案......
SAS ODBC連接的示例代碼:
PROC SQL;
CONNECT TO ODBC(DSN=loclodbc DBCONINIT="libname sasadhoc 'c:\sasdatafolder'");
CREATE TABLE temp_sas AS
SELECT * FROM CONNECTION TO ODBC(SELECT * FROM sasadhoc.test);
QUIT;
神奇的發生在代碼的「CONNECT TO ODBC ...」部分,將libname分配給所需數據所在的文件夾。
實際上,你不需要運行SAS會話; ODBC驅動程序會自動爲您啓動一個。但是,以編程方式創建ODBC配置並不容易,所以必須手動配置。這是一個問題,因爲您不能只加載任意數據集。 – 2010-03-11 20:15:01
任意,你可能的意思是「位於任何地方,任何名稱」...?或者它是作爲參數給出的? – 2010-03-11 21:46:52
位於任何地方,任何名稱。 – 2010-03-12 00:03:42
我想你可能能夠使用ADO, 查看SAS support site瞭解更多詳情。
免責聲明:
- 我沒有看過這一段時間
- 我不是100%肯定,這並不需要額外的許可
- 我不知道,如果你能做到這一點使用Python
我從來沒有嘗試過http://www.oview.co.uk/dsread/,但它可能是你在找什麼:「一個簡單的命令行實用程序,用於在SAS7BDAT文件格式的數據集進行操作。」但請注意「這個軟件應該被認爲是實驗性的,並不能保證是準確的,你自己承擔風險,它只能在未壓縮的Windows格式SAS7BDAT文件上工作。」
您可以製作一個SAS到CSV的轉換程序。
保存在sas_to_csv.sas
如下:
proc export data=&sysparm
outfile=stdout dbms=csv;
run;
然後,假設你想按如下方式訪問libname.dataset
,這個程序叫做:
sas sas_to_csv -noterminal -sysparm "libname.dataset"
的SAS數據轉換成CSV可以輸送到Python。在Python中,以編程方式生成「libname.dataset」參數將非常簡單。
現在有一個Python包,讓您閱讀.sas7bdat文件,或將其轉換爲csv如果你喜歡
- 1. 在c#中讀取sas數據集
- 2. 讀取和減半sas數據集
- 3. 用Ruby讀取SAS數據集?
- 4. 在SAS中多次讀取數據集
- 5. 如何使用NHibernate從SAS讀取數據集?
- 6. 如何讀取SAS數據集中的變量名稱?
- 7. 如何子集數據SAS
- 8. SAS Infile不讀取任何數據行
- 9. 將Excel文件讀入SAS數據集
- 10. SAS問題 - 無法讀取該數據集的數字列
- 11. SAS從數據集
- 12. 在SAS數據集
- 13. 讀取JSON文件並將其保存在SAS數據集中
- 14. 將多個csv文件讀取到SAS數據集中
- 15. 讀取n個文件到SAS來創建n個數據集
- 16. 讀取數據集
- 17. 如何獲取SAS中數據集的記錄數
- 18. Android SQLiteDataBase:如何讀取數據集?
- 19. 如何在讀取SAS中的txt文件時讀取缺失的數據?
- 20. 如何在SAS數據集中使用SAS宏
- 21. 我如何轉換XML到SAS數據集採用SAS
- 22. 修改SAS數據集
- 23. 合併SAS數據集
- 24. 拆分SAS數據集
- 25. sas轉置數據集
- 26. 合併數據集在SAS
- 27. SAS中的MGGarlic數據集
- 28. 出口數據集到SAS
- 29. SAS兩個數據集
- 30. 刪除SAS數據集
你想吃點什麼程序/格式閱讀呢?你將使用哪種編程語言? – 2010-03-03 19:19:09
我正在使用Python。我沒有指定程序或格式,因爲我不想限制迴應;如果有方法通過DLL或API讀取數據,我相信我可以弄清楚如何調用它。但是,我無法找到任何方法,無需從SAS獲得許可其他程序。 – 2010-03-03 20:07:32
會寫一個SAS宏將每個計數轉換爲自動解決方案嗎? – 2010-03-04 08:19:57