当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。