r - 将 R 文件保存到 Stata,同时保留日期时间格式
问题描述
嗨,我需要将文件从 RDS 保存到 Stata。
我有多个 .RDS 格式的文件,我想将它们全部保存为 stata (.dta) 格式。我使用 write.dta() 保存,但是当我在 stata 中打开时,我意识到我的日期时间是错误的,我无法将其转换回来
即我在R中有一个名为“datetime”的变量,它以这种格式显示日期和时间(2019-09-13 00:12:00)
当我以 stata 格式保存文件时,我希望能够取回这个日期时间。
我应该如何保存文件以便我可以保留日期时间格式。谢谢!
解决方案
从write.dta()
函数的文档中:
除非通过参数 convert.dates = FALSE 禁用,否则 R 日期和日期时间对象(POSIXt 类)将转换为 Stata 日期格式,即自 1960 年 1 月 1 日以来的天数。(对于日期时间对象,这可能会丢失信息。)Stata 可以被告知这些是日期
format xdate %td;
可以将 POSIXct 类的对象传递给 Stata,以将其视为其日期时间版本之一。Stata 使用自 1960-01-01 以来的毫秒数,不包括(格式 %tc)或计数(格式 %tC)闰秒。因此,可以使用 convert.dates = FALSE 将 POSICct 类的对象传递给 Stata 并在 Stata 中进行转换,或者在传递给 write.dta 并分配格式 %tc 之前添加 315619200 然后乘以 1000。Stata 对第一条路线的评论位于http://www.stata.com/manuals13/ddatetime.pdf,但在撰写本文时是错误的:R 使用 POSIX 约定,因此不计算闰秒。
另一种方法是在写入 Stata 之前将日期时间变量格式化为字符。这可以通过以下方式完成:
aDateTime <- as.POSIXct("2020-05-28 13:00:00")
aDateTime
> aDateTime
[1] "2020-05-28 13:00:00 EDT"
>
现在我们有了一个日期时间对象,让我们使用strftime()
函数将其转换为字符。
# convert to string
strftime(aDateTime,"%Y-%m-%d %H:%M:%S")
...和输出:
> # convert to string
> strftime(aDateTime,"%Y-%m-%d %H:%M:%S")
[1] "2020-05-28 13:00:00"
>
推荐阅读
- php - 基于用户角色的 Laravel 显示菜单
- php - 在 Union 中结合 Distinct 和 TOP 1 | SQL 服务器 2012
- spring - 如何使用实体管理器在休眠 3 中实施命名策略?
- informatica - to pass data is more sequential way
- c# - 是否有任何已知的方法来更改命名空间但支持 API 中的旧方法
- javascript - node_modules/rxjs-compat/operator/shareReplay.d.ts(2,10) 中的错误:
- zurb-foundation - 未定义所需 JS 文件中的函数
- reactjs - 闪存消息测试因 react-testing-library / material-ui 失败
- c++ - x86 opencv 中的 hresult 0x80070008 内存资源不足错误
- java - 返回 ArrayList 项而不是布尔值