write.dta
位於 foreign
包(package)。 說明
將數據幀以 Stata 二進製格式寫入文件。不寫入數組變量,除非它們可以通過 drop
寫入向量。
Frozen:10 之後將不支持 Stata 格式(Stata 11 也使用)。
用法
write.dta(dataframe, file, version = 7L,
convert.dates = TRUE, tz = "GMT",
convert.factors = c("labels", "string", "numeric", "codes"))
參數
dataframe |
一個 DataFrame 。 |
file |
給出文件名的字符串。 |
version |
整數:Stata版本:支持6、7、8和10,9映射到8、11到10。 |
convert.dates |
邏輯:轉換 |
tz |
日期轉換的時區。 |
convert.factors |
如何處理因子。 |
細節
Stata 版本中支持的文件格式之間的主要區別在於 7.0 版及更高版本允許 32 個字符的變量名稱(5 和 6 僅限於 8 個字符的名稱)。 abbreviate
函數用於將變量名稱修剪到允許的長度。如果需要這樣做,則會發出警告,並且縮寫名稱不唯一會導致錯誤。 Stata 的每個版本都聲稱能夠讀取所有早期的格式。
DataFrame 中的列成為 Stata 數據集中的變量。缺失值得到正確處理。
處理因子有四個選項。默認情況下,因子水平使用 Stata“值標簽”。對於 convert.factors = "string"
,因子水平被寫為字符串(值標簽的名稱取自 "val.labels"
屬性(如果存在),否則取自變量名稱)。使用convert.factors = "numeric"
寫入級別的數值,或者使用NA
(如果它們無法強製為數字)。最後,convert.factors = "codes"
寫入因子的底層整數代碼。最後一種方法曾經是唯一可用的方法,主要是為了向後兼容而提供的。
如果 "label.table"
屬性包含名稱尚未附加到變量的值標簽(不是變量名稱或 "val.labels"
中的名稱),那麽這些標簽也將被寫出。
如果 "datalabel"
屬性包含字符串,則將其寫為數據集標簽,否則數據集標簽為 "Written by R."
。
如果 "expansion.table"
屬性存在,則寫入擴展字段。該屬性應包含 list
,其中每個元素都是長度為 3 的 character
向量。第一個向量元素包含變量的名稱或"_dta"(表示數據集)。第二個元素包含特征名稱。第三個包含相關數據。
如果 "val.labels"
屬性包含一個 character
向量,每個值都有一個字符串標簽,則這將被寫入值標簽。否則使用變量名。
如果 "var.labels"
屬性包含一個 character
向量,其中每個變量都有一個字符串標簽,則這將被寫入變量標簽。否則,變量名稱將作為變量標簽重複。
對於 Stata 8 或更高版本,使用默認值version = 7
- Stata 8 格式相對於 7 格式的唯一優勢是它可以表示多種不同的缺失值類型,並且R沒有它們。 Stata 10/11 允許更長的格式列表,但是R不使用它們。
請注意,Stata 格式記錄為使用 ASCII 字符串 -R不強製執行此操作,但使用非 ASCII 字符串將不可移植,因為未記錄編碼。字符數據最多允許 244 個字節,較長的字符串將被截斷並發出警告。
Stata 使用一些較大的數值來表示缺失值。該函數當前不檢查,因此大於 2147483620
的整數和大於 8.988e+307
的雙精度數可能會被 Stata 錯誤解釋。
值
NULL
日期
除非被參數禁用convert.dates = FALSE
,R日期和日期時間對象 (POSIXt
類)轉換為 Stata 日期格式,即自 1960 年 1 月 1 日以來的天數。 (對於日期時間對象,這可能會丟失信息。)Stata 可以被告知這些是日期
format xdate %td;
可以傳遞類的對象POSIXct
Stata 被視為 date-times 的版本之一。 Stata 使用自 1960-01-01 以來的毫秒數,不包括(格式%tc
)或計數(格式%tC
)閏秒。所以或者是類的對象POSICct
可以傳遞給 Stataconvert.dates = FALSE
並在 Stata 中轉換,或者315619200
應先相加,然後乘以1000
在傳遞到之前write.dta
並指定格式%tc
。 Stata 對第一條路線的評論位於https://www.stata.com/manuals13/ddatetime.pdf,但在撰寫本文時是錯誤的:R使用 POSIX 約定,因此不計算閏秒。
例子
write.dta(swiss, swissfile <- tempfile())
read.dta(swissfile)
作者
Thomas Lumley and R-core members: support for value labels by Brian Quistorff.
參考
Stata 6.0 Users Manual, Stata 7.0 Programming manual, Stata online help (version 8 and later, also https://www.stata.com/help.cgi?dta_114 and https://www.stata.com/help.cgi?dta_113) describe the file formats.
也可以看看
相關用法
- R write.dbf 寫入 DBF 文件
- R write.foreign 編寫文本文件和代碼來讀取它們
- R write.arff 將數據寫入 ARFF 文件
- R S3 讀取 S3 二進製或 data.dump 文件
- R read.ssd 通過 read.xport 從 SAS 永久數據集中獲取數據幀
- R read.dbf 讀取 DBF 文件
- R read.mtp 閱讀 Minitab 便攜式工作表
- R read.dta 讀取Stata二進製文件
- R read.octave 讀取八度文本數據文件
- R read.epiinfo 讀取 Epi 信息數據文件
- R read.xport 讀取 SAS XPORT 格式庫
- R lookup.xport 有關 SAS XPORT 格式庫的查找信息
- R read.arff 從 ARFF 文件讀取數據
- R read.spss 讀取 SPSS 數據文件
- R read.systat 從 Systat 文件獲取數據幀
- R forcats fct_relevel 手動重新排序因子級別
- R forcats as_factor 將輸入轉換為因子
- R forcats fct_anon 匿名因子水平
- R forcats fct_rev 因子水平的倒序
- R forcats fct_match 測試因子中是否存在水平
- R forcats fct_relabel 使用函數重新標記因子水平,並根據需要折疊
- R forcats fct_c 連接因子,組合級別
- R forcats fct_collapse 將因子級別折疊為手動定義的組
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Write Files in Stata Binary Format。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。