[英]R: {reshape}: (melt.data.frame) How do I replicate a column?
I have an array of iterations in an MCMC algorithm.我在 MCMC 算法中有一系列迭代。 The rows represent draws from a distribution.行代表从分布中抽取。 The columns represent parameters (variables) in the distribution.这些列代表分布中的参数(变量)。 For ease of exposition: assume two variables, five iterations.为了便于说明:假设两个变量,五次迭代。 So I have:所以我有:
> 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
When I melt the dataset, I get:当我融化数据集时,我得到:
> 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
But I want to hold iteration out so that I get the equivalent of (hand edited):但我想保持迭代,以便获得相当于(手工编辑):
> 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
Supply the id
variable to melt
:将id
变量提供给melt
:
melt(draws, id = "iteration")
Gives:给出:
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
Bah.呸。 I always ask a question right before finding the answer...我总是在找到答案之前问一个问题...
I had been reading help(melt.array)
, but when I converted to a data.frame, to post my question, it eventually led me to the answer in help(melt.data.frame)
.我一直在阅读help(melt.array)
,但是当我转换为 data.frame 来发布我的问题时,它最终导致我在help(melt.data.frame)
中找到了答案。
To get what I want, I will use:为了得到我想要的,我将使用:
myMelt <- melt( draws, id.var = "iteration" );
So that I can then make a faceted plot:这样我就可以制作一个刻面的 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.