我有一个数据框
> df
Age year sex
12 80210 F
13 9123 M
我想将年份80210转换为26june1982。我怎么能这样做,新数据框包含朱利安时代的年月日格式。
答案 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