我想将不常见的日期格式转换为标准日期。基本上我有一个数据集,其中包含一个半年一次的频率格式,如下所示:206表示2006年下半年,106表示上半年等等。为了将它重新安排到2006-06-01分别2006-01-01,我写了一个小功能:如何替换R中的列?奇怪的行为与日期
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 ....日期.. 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任何建议提前!