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