将Julian日期转换为R中数据框内的日历日期

时间:2013-12-26 18:46:01

标签: r date dataframe

我有一个数据框

> df
Age   year  sex
12    80210  F
13     9123  M

我想将年份80210转换为26june1982。我怎么能这样做,新数据框包含朱利安时代的年月日格式。

3 个答案:

答案 0 :(得分:10)

您可以使用as.Date将朱利安日期转换为日期并指定适当的来源:

as.Date(8210, origin=as.Date("1960-01-01"))
#[1] "1982-06-24"

但是,80210很久以前就需要一个来源。

答案 1 :(得分:3)

您应该从年份列中减去原点。

 as.Date(c(80210,9123)-80210,origin='1982-06-26')
[1] "1982-06-26" "1787-11-08"

答案 2 :(得分:2)

在R包date中有一些选项可以完成这项工作。

例如,参见第4页,函数date.mmddyy,其中包含:

  

给定一个朱利安日期的向量,这将以“10/11/89”,“28/7/54”等形式返回它们。

试试这段代码:

age = c(12,13)
year = c(8210,9123)
sex = c("F","M")

df = data.frame(cbind(age,year,sex))

library(date)
date = date.mmddyy(year, sep = "/")

df2 = transform(df,year=date) #hint provided by jilber
df2

  age     year sex
1  12  6/24/82   F
2  13 12/23/84   M