![](/img/trans.png)
[英]Is there any option to read SAS files meta.column types using pyreadstat
[英]How to read DATA type from a sas7bdat file through pyreadstat?meta.original_variable_types giving different values?
import pyreadstat
df, meta = pyreadstat.read_sas7bdat('c:/ae.sas7bdat')
print(meta.original_variable_types)
此代碼打印值如下
{
"TRIAL_NAME":"$",
"SITEMNEMONIC":"$",
"PATIENTNUMBER":"$",
"VISITID":"BEST",
"VISITREFNAME":"$",
"SEQ":"BEST",
"PANELNAME":"$",
"STATUS":"DND",
"COMPDT":"$",
"COMPTM":"$",
"SPECID":"$"
}
從 SAS 文檔中,我了解到$
代表字符, BEST
代表數字。 但是其他類型是什么呢? 當我在 SAS 查看器中打開文件時,我可以看到類型為字符和數字。 我怎樣才能找回它? 附加來自 SAS 查看器的元信息圖像。 我想檢索那種type
如果您只需要類型,那么很容易:在pyreadstat中如果$則它是字符,如果不是,它是數字。
您在 pyreadstat 中看到的是 SAS 的格式列中沒有可變寬度(單獨存儲在 meta.variable_display_width 的 pyreadstat 中)的內容。 您將在屏幕截圖中觀察到所有字符變量的格式都以 $ 開頭,接下來的數字是變量寬度。
SAS 只有兩種類型:字符和數字,因此如果不是字符,它就是數字。 該格式告訴 SAS 如何顯示變量。 對於字符,它只是顯示具有 cerain 寬度的字符 ($),因為沒有其他選擇。 數字可以以不同的方式顯示,例如 BEST,但如果它們表示自 1960 年 1 月 1 日以來的天數,也可以顯示為 DATE,如果它們表示自 1960 年 1 月 1 日以來的秒數,則顯示為 DATETIME,等等。
如果缺少格式,您可以檢查列中的數據是否為字符串,在這種情況下,SAS 中的類型為字符。 其他任何東西都是數字:
import pyreadstat
df, meta = pyreadstat.read_xport('file.xpt')
dtypes = zip(list(df.columns), list(df.dtypes))
sas_types = dict()
for colname, coltype in dtypes:
if coltype == object:
nonan = df[colname].dropna()
if not nonan.empty:
if type(nonan[0]) == str:
sas_types[colname] = 'character'
else:
sas_types[colname] = 'numeric'
else:
sas_types[colname] = '?'
else:
sas_types[colname] = 'numeric'
編輯:
在 pyreadstat 1.1.0 版中,您現在有了 meta.readstat_variable_types。 這是一個以變量名為鍵的字典,而值為從文件中提取的二進制類型Readstat。 對於 SAS 和 SPSS,您可能會得到“字符串”(字符)或“雙精度”(數字)。 在 Stata 中,您可能還會得到“int8”、“int32”和浮點數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.