【问题标题】:Help interpreting/converting odd date format帮助解释/转换奇数日期格式
【发布时间】:2011-04-20 21:31:54
【问题描述】:

我从数据库中提取数据并存储在 Stata .dta 文件中。但是,当我使用 foreign 包将其读入 R 时,我得到的日期格式不同于我所见过的任何格式。所有其他日期都是“%m/%d/%Y”并且正确导入。

我已经搜索了数据库的文档,但没有解释“DealActiveDate”的奇数日期格式。 “facilitystartdate”日期应该接近“DealActiveDate”,但不一定相同。这是这两列的几行。

facilitystartdate DealActiveDate
1         09/12/1987   874022400000
2         09/12/1987   874022400000
3         09/12/1987   874022400000
4         09/01/1987   873072000000
5         09/08/1987   873676800000
6         10/01/1987   875664000000
7         08/01/1987   870393600000
8         08/01/1987   870393600000
9         10/01/1987   875664000000
10        09/01/1987   873072000000

如果您知道如何将“DealActiveDate”转换为更常规的日期,请告诉我。谢谢! (我不确定 SO 是不是最好的场地,但我想不出任何其他选择!)

【问题讨论】:

  • 也许更容易找出为什么数据库/Stata文件以不同方式处理/存储两个日期而不是尝试从R端进行逆向工程?
  • @Gavin -- 我认为这不是foreign 的问题;这可能只是一种奇怪的日期格式。我从一个认为“DealActiveDate”列有问题的 Stata 用户那里获得了数据,但从未追查过问题(他只是从不使用它)。我搜索了数据库的在线版本,但没有运气。我希望这里的某些向导会知道奇数日期或 Stata 格式。
  • 我想你误会了——我的意思是尝试用它在原始文件中的存储方式来解决问题,而不是为什么外国人不识别它。似乎自一个纪元以来可能是几毫秒(来自@Joshua的回答)所以我们现在可以忽略我的建议:-)
  • @Gavin -- 我确实误会了。对不起。我 99.9% 确信这些数字是正确通过的,这是从日期 y 问题开始的 x 间隔。但我一直专注于去掉前两位和后五位数字并计算天数。我只知道 R 标签是聪明的孩子们闲逛的地方。 :)

标签: r date date-format datetime-format stata


【解决方案1】:

自 1960 年 1 月 1 日以来看起来像毫秒:

as.POSIXct(874022400000/1000, origin="1960-01-01")
# [1] "1987-09-12 01:00:00 CDT"

【讨论】:

  • 谢谢!我一心想放弃 87 天和数天,但一无所获。
  • @richardh:不客气。我注意到日期之间的时间差是天数的 1000 倍((874022400000-873072000000)/(60*60*24) = 11000),这意味着毫秒。 .POSIXct(874022400) 差了 10 年,这意味着更早的时代。
猜你喜欢
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-09
  • 2023-04-08
  • 2012-10-28
相关资源
最近更新 更多