我在R中有一個大的數據集,在data.table中,其中一些列包含yyyy-mm格式的日期。其中一些缺失值,記爲「ND」。yearmon缺失值爲R中的字符
我正在尋找一個全面的解決方案,在data.table的「if」部分的這些列的「zoo」包中使用as.yearmon(x),而不會產生以下錯誤: 「as .yearmon.character(x):yearmon變量只能有一種格式「
as.yearmon(x)在只包含yyyy-mm格式的日期的列上工作正常,並且它對包含列沒有日期,只有文本,如「ND」,在這種情況下,它只給出NA。當這些問題發生組合時,就會出現這樣的問題,即存在具有日期和其他文本(例如「ND」)的列,此時發生上述錯誤。
解決這個問題的一個方法是創建新的列,其中「ND」被NA所代替,但是由於這是一個非常大的數據集,似乎需要反覆大量的代碼。如果原來的「x」沒有改變,我也會更喜歡它,因爲它也用於其他許多目的。
下面是一些代碼,以澄清:
x <- c("2016-06","2016-07","ND")
DT <- data.table(x)
DT[as.yearmon(DT$x) > as.yearmon("2016-01") , y := 1]
在某種意義上,我想as.yearmon(X),得到輸出:
DT$y
1 1 NA
我認爲,(1)你應該使用,而不是試圖與合作的r NA格式你自己的'is.na(x)< - (x ==「ND」)'和(2)你應該將你的數據存儲爲yearmon,而不是隨意轉換它'DT = data.table(x = as .yearmon(x))' – Frank