我在R中有一个数据集,其中包含yyyy / mm / dd格式的日期列。我试图使用as.Date将这些日期转换为R中的日期对象。但是,我似乎无法找到输入as.Date的原点的正确参数。以下代码是我一直在尝试的一个例子。我正在使用Excel中的CSV文件,因此我根据我查看的其他网站使用了origin =“1899/12/30。
> as.Date(2001/04/26, origin="1899/12/30")
[1] "1900-01-18"
但是,由于输入日期2001/04/26返回为“1900-01-18”,因此无效。我需要将日期转换为日期对象,然后我可以将日期转换为朱利安日期。
答案 0 :(得分:0)
您可以as.Date
使用数值,也可以使用字符值。当您在R中键入2001/04/26
时,它正在进行除法并获得19.24(数值)。数值需要原点,而您提供的数字是该原点的偏移量。因此,您距离您的出生地19天,即" 1900-01-18"。像2001年4月26日这样的日期将是
as.Date(40659, origin="1899-12-30")
# [1] "2011-04-26"
如果您的日期来自Excel"看起来像"日期机会是它们是字符值(或因素)。要将字符值转换为您想要as.Date()
的日期,请指定格式。这里
as.Date("2001/04/26", format="%Y/%m/%d")
# [1] "2001-04-26"
有关特殊?strptime
变量的详细信息,请参阅%
。现在,如果您使用read.table或其他内容将数据读入data.frame,那么您的变量可能是一个因素。如果是这种情况,那么您希望使用'
as.Date(as.character(mydf$datecol), format="%Y/%m/%d")