【发布时间】:2014-11-14 03:41:48
【问题描述】:
我有一个使用 reshape 包融化的数据框,我想“解开”。
这是一个融合数据的玩具示例(实际数据帧为 500x100 或更大):
variable<-c(rep("X1",3),rep("X2",3),rep("X3",3))
value<-c(rep(rnorm(1,.5,.2),3),rep(rnorm(1,.5,.2),3),rep(rnorm(1,.5,.2),3))
dat <-data.frame(variable,value)
dat
variable value
1 X1 0.5285376
2 X1 0.5285376
3 X1 0.5285376
4 X2 0.1694908
5 X2 0.1694908
6 X2 0.1694908
7 X3 0.7446906
8 X3 0.7446906
9 X3 0.7446906
每个变量 (X1, X2,X3) 都有在 3 个不同时间估计的值(在这个玩具示例中碰巧是相同的,但情况并非如此)。
我想以以下形式(返回):
X1 X2 X3
1 0.5285376 0.1694908 0.7446906
2 0.5285376 0.1694908 0.7446906
3 0.5285376 0.1694908 0.7446906
基本上,我希望变量列按 ID(X1、X2 等)排序并成为列标题。我尝试了 cast、dcast、recast 等的各种排列,但似乎无法以我想要的格式获取数据。将数据从宽格式“融合”到长格式(例如 dat 数据集)很容易,但事实证明很难将其取回。有任何想法吗?我知道这相对简单,但我很难概念化如何在 reshape 或 reshape2 中做到这一点。
谢谢, 唱片
【问题讨论】:
-
这里有点棘手,因为在您融化的数据中,您已经丢失了有关它最初位于哪一行的信息,即估计的三倍中的哪一倍。如果您愿意假设它始终按顺序排列为 1-2-3(如果只有两个,则为 1-2),您可以使用该信息排成一行,然后再将其放回。