【问题标题】:Fill NA's with POSIXct format with missForest()使用missForest() 用POSIXct 格式填充NA
【发布时间】:2019-03-14 15:44:40
【问题描述】:

我在 R 中用 missForest()package 填充 NA。在没有 POSIXct 日期格式的子集中,它运行良好,但是当我尝试在具有 POSIXct 格式的示例中时,出现错误Error in sample.int(length(x), size, replace, prob) : invalid first argument。 ..但两个样本都非常相似,只是一个带有 NA 的 POSIXct 用于第二个。

我做了一个测试,只是在第一个子样本中添加一列,其中包含今天的日期并在其中添加 3 NA。包不工作。

您是否有任何修复它的想法,或者考虑到日期格式可能存在任何其他包?

你可以举个例子来看看我的意思:

df <- data.frame(
  Date = Sys.Date(),
  LOT = rnorm(5), 
  S12_A = c(7,7,7,7,7),  
  S123_AA = c(1,1,NA,1,1), 
  S135_AA = rnorm(5), 
  S1763_BB = rnorm(5), 
  S173_BB = rnorm(5)
)

df$Date[4] <- NA

library(missForest)

missForest(df)

【问题讨论】:

标签: r


【解决方案1】:

我收到一个错误Error in sample.int(length(x), size, replace, prob) : invalid first argument。如果我排除第一列,则插补会发出警告。确定要估算日期吗?

您可以做的是将日期强制转换为数字变量,估算并转换回来。

out <- missForest(df[, -1])
out$ximp$Date_numeric <- as.Date(out$ximp$Date_numeric, origin = "1970-01-01")
out$ximp

         LOT S12_A S123_AA     S135_AA  S1763_BB      S173_BB Date_numeric
1  0.9056106     7       1 -0.90207400 0.8070748 -1.080159330   2019-03-14
2  0.4843268     7       1  0.54376134 0.1376736  0.453839813   2019-03-14
3 -0.5628681     7       1  0.05709977 0.6064287  0.827101136   2019-03-14
4 -0.1781705     7       1  0.18665039 1.5048530 -0.009170842   2019-03-14
5  0.8294332     7       1  0.40884799 1.6707076 -0.350740495   2019-03-14

【讨论】:

  • 哦,好吧,这是自开始日期以来的第二次(我不记得年份了)。但好吧,我明白你的意思了。谢谢你的时间:)
  • @AlexGermain origin 日期是让 R 知道 0 何时开始计数。这是一个电脑的东西......
  • 是的,但我的意思是,在 SAS 中,例如日期是自 1960 年以来以秒为单位存储的
  • 我承认,有时这很令人困惑。不过,好的文档还有很长的路要走。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-23
相关资源
最近更新 更多