【问题标题】:R reshape dcast 0 and 1R重塑dcast 0和1
【发布时间】:2013-10-04 05:01:25
【问题描述】:

您好,我的数据如下所示:

partNumber manufacturer supplier availability
p1         m1           s1       100
p1         m1           s2       500
p2         m2           s1       200
p2         m2           s3       300
....

我的预期输出应该是这样的:

partNumber manufacturer s1    s2    s3...
p1         m1           100   500   0 ...
p2         m2           200   0     300 ...
...

我试图在 reshape2 包中使用 dcast 来实现这一点,这是我的命令:

df.dcast <- dcast(df, partNumber + manufacturer ~ supplier, value.var="availability")

但是,输出值只有 0 和 1,似乎将输出变成了结帐,而不是显示可用性值。

partNumber manufacturer s1    s2    s3...
p1         m1           1     1     0 ...
p2         m2           1     0     1 ...
...

顺便说一句,当我运行命令时,有一个警告提示

Aggregation function missing: defaulting to length... 

我不太明白聚合函数的作用,如果有任何帮助和解释,将不胜感激。

【问题讨论】:

  • 如果您的零件编号和制造商对是唯一的,那么您可以将fun.aggregate 添加为总和或平均值,这应该可以工作。您看到的 1 和 0 是聚合函数长度的结果。 fun.aggregate 参数告诉 dcast 对具有相同零件编号和制造商的可用性中找到的值执行什么功能
  • 我无法使用您提供的数据样本重现您的错误。
  • 感谢您的快速回复,我也在想同样的事情,但是,它们应该是唯一的,但看起来 1 和 0 是由“非唯一”partNumber 和制造商密钥引起的。 ..在这种情况下我该怎么办。在做演员之前运行一个独特的?
  • @Ferdinand.kraft 这可能是由于 Codoremifa 提到存在重复的“密钥对”的原因......而我的示例数据不包含它。
  • 为了帮助制作一个可重复的示例,您可以使用 reproduce(&lt;your data&gt;) 在此处查看链接和说明:bit.ly/SORepro

标签: r casting reshape reshape2


【解决方案1】:

当我使用您的数据示例执行此操作时,我得到:

df.dcast <- dcast(df, partNumber + manufacturer ~ supplier, value.var="availability")
df.dcast
  partNumber manufacturer  s1  s2  s3
1         p1           m1 100 500  NA
2         p2           m2 200  NA 300

最有可能发生的情况是您的availability 列不是您认为的那样。也许它被转换为因子变量,因为输入文件的该列中有一些文本。如果是这种情况,那么您需要阅读R-FAQ 7.10

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 2017-06-28
    • 1970-01-01
    • 1970-01-01
    • 2020-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多