【问题标题】:Error in checkData(data) : Only numeric data allowedcheckData(data) 中的错误:只允许数字数据
【发布时间】:2019-02-09 06:25:00
【问题描述】:

我正在尝试从changepoint package 运行cpt.mean 函数。在第一次尝试在我的数据框 df2 上运行它之后,它给了我一个错误:

我的数据框df2 如下所示:

    date     amount
2012-07-01   0.0000000
2012-08-01   1.1111111
2012-09-01   0.2985075
2012-10-01   0.5141388
2012-11-01   0.0000000
2012-12-01   0.0000000
2013-01-01   0.6849315
2013-02-01   1.9762846
2013-03-01   1.1799410
2013-04-01   0.2881844
2013-05-01   0.2617801
2013-06-01   1.2285012

我的代码:

df2 <- data.frame(df1$date,df1$amount))
df2.pelt <- cpt.mean(df2, method="PELT")

checkData(data) 中的错误:只允许数字数据

所以我这样做了:

df2 <- data.frame(as.numeric(df2$date),as.numeric(df2$amount))

我的新数据框如下所示:

 date        amount
15522      0.0000000
15553      1.1111111
15584      0.2985075
15614      0.5141388
15645      0.0000000
15675      0.0000000
15706      0.6849315
15737      1.9762846
15765      1.1799410
15796      0.2881844
15826      0.2617801
15857      1.2285012

我尝试再次运行我的 cpt.mean 函数,出现同样的错误。 然后我看看我的专栏是什么类:

> class(df2$date.)
[1] "numeric"
> class(df2$amount.)
[1] "numeric"

两次我都得到“数字”的结果,但 cpt.means 仍然没有运行。

我错过了什么?有什么建议吗?

谢谢

【问题讨论】:

  • 这个答案对你有帮助吗?

标签: r numeric error-code


【解决方案1】:

documentation 中,突出显示了data 功能:

数据

包含数据的向量、ts 对象或矩阵 您希望找到一个变更点。如果数据是一个矩阵,每一行是 被视为一个单独的数据集。

因此,正如它所说,您的数据应该是 vectorma​​trixtime series object

但如果你运行class(df2),它会给你一个data.frame

以下是使用向量运行此函数的小示例:

library(changepoint)    
x=c(rnorm(100,0,1),rnorm(100,10,1))
cpt.mean(x,penalty="SIC",method="AMOC",class=FALSE) 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-22
    • 2014-04-11
    • 2012-10-08
    相关资源
    最近更新 更多