繁体   English   中英

R: {reshape}: (melt.data.frame) 如何复制列?

[英]R: {reshape}: (melt.data.frame) How do I replicate a column?

我在 MCMC 算法中有一系列迭代。 行代表从分布中抽取。 这些列代表分布中的参数(变量)。 为了便于说明:假设两个变量,五次迭代。 所以我有:

> draws <- data.frame( iteration = c(1:5),
                       alpha     = rnorm(5,0,1),
                       beta      = rnorm(5,0,1))

  iteration      alpha       beta
1         1 -0.3157940  0.2122465
2         2  1.0087298 -0.2346733
3         3  1.0366165  0.3472915
4         4 -2.4256564  0.9863279
5         5 -0.6089072 -1.1213000

当我融化数据集时,我得到:

> melt(draws)
Using  as id variables
    variable      value
1  iteration  1.0000000
2  iteration  2.0000000
3  iteration  3.0000000
4  iteration  4.0000000
5  iteration  5.0000000
6      alpha -0.1042616
7      alpha  1.0707001
8      alpha  0.2166865
9      alpha  0.0771617
10     alpha -0.8893614
11      beta -0.4846693
12      beta -1.5950729
13      beta -0.7178340
14      beta  1.0149766
15      beta -0.3128256

但我想保持迭代,以便获得相当于(手工编辑):

> melt(draws)
Using  as id variables
   iteration  variable      value
1          1     alpha -0.1042616
2          2     alpha  1.0707001
3          3     alpha  0.2166865
4          4     alpha  0.0771617
5          5     alpha -0.8893614
6          1      beta -0.4846693
7          2      beta -1.5950729
8          3      beta -0.7178340
9          4      beta  1.0149766
10         5      beta -0.3128256

id变量提供给melt

melt(draws, id = "iteration")

给出:

   iteration variable       value
1          1    alpha -0.02765436
2          2    alpha -1.42138702
3          3    alpha  0.83525096
4          4    alpha -1.10677555
5          5    alpha  0.72465936
6          1     beta  0.59269720
7          2     beta -0.32164072
8          3     beta -1.31097204
9          4     beta  0.94993620
10         5     beta  0.20919169

呸。 我总是在找到答案之前问一个问题...

我一直在阅读help(melt.array) ,但是当我转换为 data.frame 来发布我的问题时,它最终导致我在help(melt.data.frame)中找到了答案。

为了得到我想要的,我将使用:

myMelt <- melt( draws, id.var = "iteration" );

这样我就可以制作一个刻面的 plot:

ggplot(myMelt, aes(x = iteration,y = value)) + geom_point() + stat_smooth() + facet_grid(variable ~., scales="free")

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM