如何使用重塑恢复数据(&Q;U) [英] How to "unmelt" data with reshape r

查看:9
本文介绍了如何使用重塑恢复数据(&Q;U)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个数据框,它是我使用重塑包熔化的,我想"取消熔化"它。

这里有一个融合数据的玩具示例(实际数据框为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等的各种组合。而且似乎无法以我想要的格式获得数据。将数据从宽格式"熔化"到较长的格式(例如数据集)是很容易的,但要把它恢复过来却很难。有什么主意吗?我知道这相对简单,但我很难构思如何在重塑或重塑2中做到这一点。

谢谢, LP

推荐答案

我通常创建一个id列,然后使用dcast

> dat
  variable     value
1       X1 0.4299397
2       X1 0.4299397
3       X1 0.4299397
4       X2 0.2531551
5       X2 0.2531551
6       X2 0.2531551
7       X3 0.3972119
8       X3 0.3972119
9       X3 0.3972119
> dat$id <- rep(1:3,times = 3)
> dcast(data = dat,formula = id~variable,fun.aggregate = sum,value.var = "value")
  id        X1        X2        X3
1  1 0.4299397 0.2531551 0.3972119
2  2 0.4299397 0.2531551 0.3972119
3  3 0.4299397 0.2531551 0.3972119

这篇关于如何使用重塑恢复数据(&Q;U)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆