【问题标题】:Imputing a RDA causes "Origin must be supplied" error估算 RDA 会导致“必须提供来源”错误
【发布时间】:2018-03-11 19:53:06
【问题描述】:

这是在 Rstudio 上。我理解“必须提供原产地”错误的通常含义,并且可以修复它。但是这个有点棘手。

从离开的人那里收到了大约 500 行 R 代码。我根据她的规范对齐了输入 CSV,并使用 str() 与她的测试 CSV 文件进行了验证。一切正常,直到这一行

步骤[is.na(step3)]

错误提示“在 as.date.numeric(value) 中”“必须提供‘原点’”

Steps 现在包含 num、int、char、Factor... 但只有一个 Date,名为 p-day。我假设错误是关于这个单独的日期字段?另外:

【问题讨论】:

  • 日期分类向量是数值模式。并且没有“估算”NA。 is.na 函数返回一个逻辑值。

标签: r


【解决方案1】:

所以as.Date.numeric 函数需要一个原点。那是 R。当您尝试将零分配给 Date-classed 向量时,它会被隐式调用。 R 和 C 日期的默认原点(日期值 1)是 1970-01-01。所以这可能意味着原始程序员希望该值是原点的前一天。 (或者他可能不太了解 R...?)。

> dt <- as.Date(c("1970-01-01", NA))
> dt
[1] "1970-01-01" NA          
> dt[is.na(dt)] <- 0
Error in as.Date.numeric(value) : 'origin' must be supplied
> mode(dt)
[1] "numeric"
> dt[is.na(dt)] <- dt[1]-1
> dt
[1] "1970-01-01" "1969-12-31"
> dt <- as.Date(c("1970-01-01", NA))
> dt[is.na(dt)] <- dt[1]*0
Error in Ops.Date(dt[1], 0) : * not defined for "Date" objects
> dt[is.na(dt)] <- as.Date("1969-12-31")
> dt
[1] "1970-01-01" "1969-12-31"

您可以将该零更改为 as.Date(origin) 或明确指定纪元默认开始前的一天。

【讨论】:

  • 谢谢。让我测试一下,然后回复你。
【解决方案2】:

我只是把日期变量取出来,手动设置它的Origin并重新运行

步骤[is.na(step3)]

现在向量没有丢失数据变量,它工作正常

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-05
    • 2017-04-25
    • 2016-03-28
    • 2019-09-20
    • 1970-01-01
    • 2017-07-18
    • 2020-08-10
    • 1970-01-01
    相关资源
    最近更新 更多