【发布时间】: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(<your data>)在此处查看链接和说明:bit.ly/SORepro。
标签: r casting reshape reshape2