これは、はるかに簡単にする必要があり、誰かが私を助けることができるようです。私は、それぞれの月の最初の日付を、rubridateパッケージのfloor_date()を使って日付のdata.frameから変更しようとしていますが、それらの日付のいくつかはNAです。私はむしろNAにダミーの日付を代用することはしません。Rの日付を変換してNAの日付を変換するのに適用する
私は以下試してみた:
library(lubridate)
a<-c(as.Date("2011-05-04"), as.Date("2011-06-12"))
b<-c(as.Date("2012-03-01"), NA)
test <- data.frame(a,b)
apply(test, 1, function(y) sapply(y, function(x) if(!is.na(x)) floor_date(x, "month") else na.pass(x)))
apply(test, 1, function(y) ifelse(!is.na(y)), floor_date(y, "month"), na.pass(y))
最初の呼び出しが戻る:
Error in object[[name, exact = TRUE]] : subscript out of bounds
二コール・リターンを:
Error in update.default(x, mdays = 1, hours = 0, minutes = 0, seconds = 0) :
need an object with call component
は、任意の助けをありがとう!
大きな問題は、 'apply'が行列を強要しようとしていて、R" Date "を日付にすることを含むすべての属性が失われるということです。' lapply'をonにする必要があります列を処理するのではなく、列を使用することをお勧めします –
各日付を最初の月に変換したいのですか?そうであれば、一度に1つずつ行を処理することは意味を持ちません。 、1、....) 'します。あなたはむしろ' data.frame(lapply(test、...)) 'のようなことをする必要があります。これは' test'の各列を取り、それらの計算を実行しますそれぞれの順番に並べ替えて、結果の列のリストをdata.frameに戻します。 –