【发布时间】:2012-05-01 21:27:45
【问题描述】:
如何将下面的 data.frame 转换为给定的矩阵? data.frame 的前两列包含行变量,其他列的所有组合(包含值的列除外)确定列。理想情况下,我正在寻找一个不需要更多软件包的解决方案(所以 no reshape2 解决方案)。另外,没有ftable 解决方案。
(df <- data.frame(c1=rep(c(1, 2), each=8), c2=rep(c(1, 2, 1, 2), each=4),
gr=rep(c(1, 2), 8), subgr=rep(c(1,2), 4, each=2), val=1:16) )
c1 c2 gr1.subgr1 gr1.subgr2 gr2.subgr1 gr2.subgr2
1 1 1 3 2 4
1 2 5 7 6 8
2 1 9 11 10 12
2 2 13 15 14 16
【问题讨论】:
-
总是有基本函数
reshape,我一直不够聪明,无法理解它的论点,但我也不是一个贪吃痛苦的人,所以我通常使用reshape2,因为它是一致性和易用性。 YMMV -
reshape 和 reshape2 是用 base R 编写的,所以如果你想在不加载包的情况下使用它们的方法,只需提取函数内容(例如,键入 acast 并复制函数内容)
标签: r