2014-01-24 45 views
0

即使阅读文档后,我对如何使用dcast功能也有点困惑。我正在尝试按如下方式熔化熔融数据帧:dcast熔融数据帧如何跨多个维度?

> head(res) 
     factoroneid  factortwoid   val 
1    1    1 5.8223670800 
2    1    2 -1.3314644000 
3    1    3 0.7206910120 
4    1    4 0.0762039224 
5    1    5 2.7409736300 
6    1    6 0.0896606575 

res包含第1列和第2列作为索引。我需要使用第一列数据作为行号和第二列数据作为列号,并使用第三列的值生成矩阵。我正在尝试这样的事情,但数据看起来不正确。

temp <- dcast(res, factoroneid + factortwoid ~ val) 

预期的输出应该是:

1   2  3  4 ... 
1 5.82 -1.33 0.72 0.076 ... 
2 
3 
4 
. 
. 

能否请你建议?

回答

1
dcast(res, factoroneid ~ factortwoid) 

适合我。

+0

谢谢。这似乎很简单:)。我不知道如何在输出结果中指定val。为了更好地理解,在这种情况下,因为它只有一个列,它只是复制值,但如果有多个列,那么我们需要一个托架来使用聚合函数(例如SUM)来聚合它们。我的理解是否正确? – Alok

+1

@Alok,不完全。如果来自同一列的多个值与任何单个'factoroneid〜factorwoid'组合匹配,则需要聚合函数。如果你在你的铸造数据框中有多个值列,你首先需要进一步“融化”你的数据,这样你只有一个值列,然后才是“dcast”。参见[Andrie的解释](http://stackoverflow.com/questions/11608167/cast-multiple-value-columns)。如果你有多个值列,但只想保留一列,那么你使用'value.var'。 – BrodieG