我正在尝试将不常见的日期格式转换为标准日期。基本上我有一个数据集,其中包含一个半年频率的周期,格式如下:206 表示 2006 年下半年,106 表示上半年,依此类推。为了将其重新排列为 2006-06-01 和 2006-01-01,我编写了一个小函数:
period2date = function(period)
{
check=list()
check=strsplit(as.character(period),split="")
x=as.numeric(check[[1]][1])
p=ifelse( x >= 2,6,1)
x=2
out=paste(x,"0",check[[1]][2],check[[1]][3],"-",p,"-1",sep="")
out=as.Date(out)
return(out)
}
你现在可以笑了:)。无论如何,该功能有效,问题就来了。我想将此函数应用于 data.frame 的时间列。我尝试了以下方法:
as.data.frame(lapply(mydf$period,period2date))
返回的结果最接近我想要的结果:structure.13665..class..Date.. 1 2006-06-01
等等.. 显然我很想保留我的专栏名称——或者甚至更好地将新格式化的日期添加到我原来的 df 中。另外我试过:
sapply(mydf$period,period2date) # with results equal to the line below
unlist(lapply(mydf$period,period2date))
[1] 13300 13514 13665
我要做的就是将不常见的 206 等格式更改为 2006-06-01 (有效)并向 mydf 添加一列(无效)
thx 提前提出任何建议!