當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R write.dta 以 Stata 二進製格式寫入文件


R語言 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

邏輯:轉換 DatePOSIXct 對象:請參閱“日期”部分。

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;

可以傳遞類的對象POSIXctStata 被視為 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.

也可以看看

read.dta , attributes , DateTimeClasses , abbreviate

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Write Files in Stata Binary Format。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。