首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用reshape2包中的熔体/铸得到以下答案

如何使用reshape2包中的熔体/铸得到以下答案
EN

Stack Overflow用户
提问于 2013-05-10 04:19:04
回答 1查看 100关注 0票数 0

我有两个数据帧,xy。我rbind他们去找z。然后我使用reshape函数(而不是包)来得到下面的答案。

代码语言:javascript
复制
set.seed(1234)
x <- data.frame(rp=c(1:5),dmg=1000*runif(5), loss=500*runif(5), model="m1")
y <- data.frame(rp=c(1:5),dmg=1000*runif(5), loss=500*runif(5), model="m2")
z <- rbind(x, y)

> z
rp   dmg  loss model
1 113.7 320.2    m1
2 622.3   4.7    m1
3 609.3 116.3    m1
4 623.4 333.0    m1
5 860.9 257.1    m1
1 693.6 418.6    m2
2 545.0 143.1    m2
3 282.7 133.4    m2
4 923.4  93.4    m2
5 292.3 116.1    m2

> reshape(z, idvar="rp", timevar="model", direction="wide")
rp dmg.m1 loss.m1 dmg.m2 loss.m2
1  113.7   320.2  693.6   418.6
2  622.3     4.7  545.0   143.1
3  609.3   116.3  282.7   133.4
4  623.4   333.0  923.4    93.4
5  860.9   257.1  292.3   116.1

如何在reshape2中使用铸造/熔体组合获得相同的结果?

EN

回答 1

Stack Overflow用户

发布于 2013-07-06 13:45:32

代码语言:javascript
复制
> dcast(melt(z, c("rp", "model")), rp ~ variable + model)
  rp   dmg_m1   dmg_m2    loss_m1   loss_m2
1  1 113.7034 693.5913 320.155303 418.64781
2  2 622.2994 544.9748   4.747878 143.11164
3  3 609.2747 282.7336 116.275253 133.41039
4  4 623.3794 923.4335 333.041879  93.36139
5  5 860.9154 292.3158 257.125571 116.11296

分解:首先使用melt将其置于长形式中。但是,您不希望将rpmodel融为一体,因为它们将用于稍后识别行和列。

代码语言:javascript
复制
> my.df <- melt(z, c("rp", "model"))
> my.df
   rp model variable      value
1   1    m1      dmg 113.703411
2   2    m1      dmg 622.299405
3   3    m1      dmg 609.274733
4   4    m1      dmg 623.379442
5   5    m1      dmg 860.915384
6   1    m2      dmg 693.591292
7   2    m2      dmg 544.974836
8   3    m2      dmg 282.733584
9   4    m2      dmg 923.433484
10  5    m2      dmg 292.315840
11  1    m1     loss 320.155303
12  2    m1     loss   4.747878
13  3    m1     loss 116.275253
14  4    m1     loss 333.041879
15  5    m1     loss 257.125571
16  1    m2     loss 418.647814
17  2    m2     loss 143.111642
18  3    m2     loss 133.410390
19  4    m2     loss  93.361395
20  5    m2     loss 116.112955

然后使用dcast将其转换为数据帧。您希望rp标识行,variablemodel都标识列,并使用公式表示这一点。

代码语言:javascript
复制
> dcast(my.df, rp ~ variable + model)
  rp   dmg_m1   dmg_m2    loss_m1   loss_m2
1  1 113.7034 693.5913 320.155303 418.64781
2  2 622.2994 544.9748   4.747878 143.11164
3  3 609.2747 282.7336 116.275253 133.41039
4  4 623.3794 923.4335 333.041879  93.36139
5  5 860.9154 292.3158 257.125571 116.11296
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16475113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档