我在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