珍しい日付形式を標準の日付に変換しようとしています。基本的に、次のようにフォーマットされた半年ごとの頻度の期間を含むデータセットがあります。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(機能しない)に列を追加することだけです。
事前に提案をお願いします!