【发布时间】:2015-09-15 13:12:57
【问题描述】:
Stata 中的 %tw 格式为:1960w1,在 R 中没有等价物。 因此必须对 %tw 日期进行后处理。
将 .dta 文件导入 R,日期是一个整数,如 1304(而不是 1985w5)或 1426(而不是 1987w23)。如果它是一个简单的时间序列,您可以按如下方式设置开始日期:
ts(df, start= c(1985,5), frequency=52)
另一种可能是:
as.Date(Camp$date, format= "%Yw%W" , origin = "1985w5")
但是如果每一行不是一个日期,那么你必须转换它。
ISOweek 包基于 ISO-8601,格式为“1985-W05”,不处理 Stata %tw。
Lubridate 包不适用于这种格式。 week() 返回从日期到 1 月 1 日之间发生的完整 7 天周期数加一。 week function
在任何一年的 Stata 中,第一周从 1 月 1 日开始,无论是一周中的哪一天。 Stata Documentation on Dates
在 R 中 Date 的 %W 格式中,一周从星期一作为一周的第一天开始。
从 strptime %V 开始
ISO 中定义的以十进制数 (00--53) 表示的一年中的第几周 8601. 如果包含 1 月 1 日的一周(从星期一开始)在新的一年中有四天或更多天,则认为它是第 1 周。否则, 这是上一年的最后一周,下一周是第 1 周。 (接受但在输入时忽略。)Strptime
Larmarange 在 Github 上指出 Haven doesn't interpret dates properly:
月、周、季度和半年是来自 Stata 的特定格式, 分别为 %tm、%tw、%tq 和 %th。我不确定是否有 R中可用的相应格式。到目前为止,它们被导入为 整数。
有没有办法将 Stata %tw 转换为 R 可以理解的日期格式? Here is an Stata file with dates
【问题讨论】: