【问题标题】:Using Time Series in R在 R 中使用时间序列
【发布时间】:2016-08-05 19:11:16
【问题描述】:

我相信 Time series in R 已经详细讨论了在 R 中使用时间序列。

但是,上面的数据集在我迄今为止阅读的所有 SO 帖子和书籍中都假设为一个数字数组 (https://media.readthedocs.org/pdf/a-little-book-of-r-for-time-series/latest/a-little-book-of-r-for-time-series.pdf)。如果我的数据也有分类数据怎么办?例如,

> head(sassign)
  acctnum gender state   zip zip3 first last book_ nonbook_ total_ purch child youth cook do_it refernce
1   10001      M    NY 10605  106    49   29   109      248    357    10     3     2    2     0        1
2   10002      M    NY 10960  109    39   27    35      103    138     3     0     1    0     1        0
3   10003      F    PA 19146  191    19   15    25      147    172     2     0     0    2     0        0
4   10004      F    NJ 07016  070     7    7    15      257    272     1     0     0    0     0        1
5   10005      F    NY 10804  108    15   15    15      134    149     1     0     0    1     0        0
6   10006      F    NY 11366  113     7    7    15       98    113     1     0     1    0     0        0
  art geog buyer
1   0    2    no
2   0    1    no
3   0    0    no
4   0    0    no
5   0    0    no
6   0    0   yes

现在,这是我从上面创建时间序列对象的操作:--我的目标是使用“last”对行进行分组,然后使用 sassign 将时间序列类型的对象应用于“last”。

t_sassign <-data.frame(group_by(sassign,last))
t_sassign<-ts(t_sassign,start = c(2014,1),frequency = 12)

“Last”是表示购买后最近 'n' 个月的列。 上面的代码运行良好,只是代码抛出了警告。

Warning message:
In data.matrix(data) : NAs introduced by coercion

为什么会这样?请帮助我......我的假设是我得到 NAs 因为 R 不知道如何对混合数据进行分组——对状态(分类)与 book_(连续)等列进行分组。我对么?

但是,如果我的假设是正确的,我不太确定如何处理混合数据。如果都是分类的,我会使用 CrossTabs。如果它是连续的,我会使用 sum、median 等函数。但是,对于混合数据,我不太确定。

非常感谢您的想法。

【问题讨论】:

    标签: r group-by


    【解决方案1】:

    没有。 “NA”可能是因为 ts 未能将“gender”、“state”和“buyer”的字符值转换为数字。当它们是因素时,不会出现警告消息。

    sassign = read.table(header = TRUE, text = "
    acctnum gender state   zip zip3 first last book_ nonbook_ total_ purch child youth cook do_it refernce art geog buyer
    1   10001      M    NY 10605  106    49   29   109      248    357    10     3     2    2     0        1 0    2    no
    2   10002      M    NY 10960  109    39   27    35      103    138     3     0     1    0     1        0 0    1    no
    3   10003      F    PA 19146  191    19   15    25      147    172     2     0     0    2     0        0 0    0    no
    4   10004      F    NJ 07016  070     7    7    15      257    272     1     0     0    0     0        1 0    0    no
    5   10005      F    NY 10804  108    15   15    15      134    149     1     0     0    1     0        0 0    0    no
    6   10006      F    NY 11366  113     7    7    15       98    113     1     0     1    0     0        0 0    0   yes
    ");
    t_sassign <-data.frame(group_by(sassign,last))
    t_sassign<-ts(t_sassign,start = c(2014,1),frequency = 12)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-30
      • 1970-01-01
      • 2019-09-06
      • 1970-01-01
      • 1970-01-01
      • 2022-08-14
      • 2016-08-12
      • 2011-12-09
      相关资源
      最近更新 更多