【问题标题】:zoo object cannot contain both factor and numeric vectors [closed]zoo 对象不能同时包含因子和数值向量
【发布时间】:2012-12-28 10:01:08
【问题描述】:

我在阅读动物园常见问题解答时,遇到了一些令我惊讶的事情。

“动物园”对象可以是 (1) 数值向量,(2) 数值矩阵或 (3) 一个因子,但不能同时包含数值向量和因子。

期望这种情况成立是不合理的吗?以及在zoo 中无法实现的原因是什么?基本上,我想将zoo 对象视为具有时间顺序的数据框。

【问题讨论】:

  • 你有机会给我们看一些代码吗?比如,你如何创建一个动物园对象以及你想如何创建一个?
  • zoo 旨在将 R 中的 "ts" 类推广到具有任意索引类的不规则间隔系列。 "ts" 类也是基于矩阵的。坚持使用矩阵的原因之一是在 R 中对矩阵的操作比对 data.frames 的操作要快得多。如果您的非数字数据代表某种 ID,那么它们可能无论如何都标识了单独的系列。在这种情况下,read.zoo 中的 split= 参数会处理该问题。解决方法包括为每个类使用单独的对象,将因子转换为数字(并在其他地方维护级别信息)或使用其他一些表示。
  • @G.Grothendieck 感谢 Gabor。你的答案正是我正在寻找的那种背景。如果你把它作为一个答案,我会标记它。
  • @G.Grothendieck 提供的背景在动物园小插图中,zoo: An S3 Class and Methods for Indexed Totally Ordered Observations (PDF).
  • @JoshuaUlrich 谢谢。我一直在阅读所有 zoo 文档,因为我预计在即将到来的项目中会广泛使用它。我也会阅读小插图。

标签: r zoo


【解决方案1】:

zoo 对象是具有索引属性的矩阵。因此,您不能在 zoo 中混合类型,原因与不能在矩阵中混合类型的原因相同(即矩阵只是具有 dim 属性的向量,您不能在向量中混合类型)。

【讨论】:

  • 击败我十秒,但我赢了冗长 ;-)
  • @DirkEddelbuettel:你总是以冗长取胜。
【解决方案2】:

你写

基本上,我想把动物园对象想象成一个数据框 时间排序。

而你在这里简直是离谱。 “只愿”并非如此。简而言之,zooxts 可以处理数字矩阵(或特殊情况下的向量,两者实际上都是具有/不具有维度属性的向量),并且因子已经是一个延伸。

zoo 存在这么多年,data.frame 从来都不是受支持的数据类型,也永远不会是由于内部架构和实现选择。 data.frame 对象的性能也更差。

但您可以考虑将data.table 作为替代方案。

【讨论】:

  • "期望它成立是不是很不合理?以及在zoo中无法实现的原因是什么?"
  • 是的,有。但是,如果您找到方法,请随时发送补丁。
  • 你是真正的原创者,这就是为什么在 r-help、r-sig-finance、SO 等上提出 100 多次的问题是你与生俱来的权利,并期待我们一切都跳进去重复一遍,只为你,因为你是如此特别。 Matrix 它是 zoo(和 xts)的核心。
  • 德克,恕我直言,您选择回答一个非原创问题。您可以省略所有不相关的内容并简洁地回答,甚至可以在 cmetspace 中留下一个链接。我想我从来没有看到以敌意和不尊重回答的意义,这是 R 列表的特征。
  • Dirk,并不是要挖掘一个古老的问题,但可以说我在这个问题中提出的正是 Python pandas.DataFrame 提供的混合 dtypes数组和index 属性?并不是要争吵,只是在您可能熟悉pandas.DataFrame 对象的范围内寻找您的意见。谢谢,一如既往。
猜你喜欢
  • 2021-11-19
  • 1970-01-01
  • 2013-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多