【发布时间】:2015-08-21 15:39:48
【问题描述】:
我有一个日期列,如下所示
Date1
4010
5178
5494
6750
7106
39
39
172
1704
4152
我正在尝试使用此函数将其转换为真实日期
as.Date(df$Date1, origin = "1970-01-01")
但是我发现这些数字被转换为这些不正确的日期。
Date1_Converted
1980-12-24
1984-03-26
1985-01-16
1988-06-25
1989-06-16
1970-02-09
1970-02-09
1970-06-22
1974-09-01
1981-05-15
正确的转换应该是
Date1_CrctTrnsf
2005.10.31
2009.02.11
2009.12.04
2013.05.15
2014.05.06
1994.02.22
1994.02.22
1994.08.03
1999.05.03
2006.03.22
我假设这是一个起源问题,不知道如何解决这个问题,非常感谢任何关于如何解决这个问题的帮助。
【问题讨论】:
-
您是正确的,因为它是一个起源问题。 Date1 列中的数据代表什么?似乎 R 将这些视为天,这就是为什么你最终得到 Date1_Converted 的输出(例如 4010/365 = 10.986 年,这大约是原点和 Date1_Converted 日期的差异。改变原点有帮助吗?还是需要使用已有的原点?
-
Date1中的数值之间的天数差异似乎与Date1_CrctTrnsf中的日期之间的天数不一致。例如,查看第二个和第三个值,5494 - 5178 = 316,而as.numeric(as.Date("2009-12-04")) - as.numeric(as.Date("2009-02-11"))= 296。 -
@small_data88,我之前尝试过更改原点,我将原点从
origin = "1970-01-01"更改为origin = "1994-01-15",因此它只是将39 转换为1994.02.22,但剩余日期不正确。您对这些代表天数的数字提出了很好的观点。 -
@BridgeportByronTucker 实际上是
1994-11-08,如果你想要像示例中那样使用点而不是破折号,可以使用gsub -
@Hack-R,origin 不起作用,如您所见,观察 6 应该是
1994.02.22而不是1994.12.17:)