2012-11-06 52 views
3

我想使用ggplot2繪製3行。 我的數據是這樣的使用ggplot2將數據重塑爲R中的圖形

print(x) 
    V1  V2  V3  V4 
1 -4800 25195.73 7415.219 7264.28 
2 -2800 15195.73 5415.219 7264.28 

從這個例子,我understadn,我需要我的數據重塑到這樣的事情。是對的嗎?

 id  x  y  
1  1  -4800 25195.73 
2  1  -2800 15195.73 
3  2  -4800 7415.219 
4  2  -2800 5415.219 
5  3  -4800 7264.28 
6  3  -2800 7264.28 

我該如何做這個重塑?

謝謝!

回答

4

使用reshape2

library(reshape2) 

x$id <- seq_len(nrow(x)) 
melted <- melt(x, id.vars = c('id','V1')) 
# rename 
names(melted) <- c('id', 'x', 'variable', 'y') 
1

基本重塑可以做的伎倆:

oldx = read.table(textConnection("V1 V2 V3 V4 
-4800 25195.73 7415.219 7264.28 
-2800 15195.73 5415.219 7264.28"), header=TRUE) 

print(oldx) 
    V1  V2  V3  V4 
1 -4800 25195.73 7415.219 7264.28 
2 -2800 15195.73 5415.219 7264.28 

現在運行這個命令:

newx<-reshape(oldx, dir="long", idvar="V1",varying=c("V2","V3","V4"), v.names="y") 
names(newx) <- c('x','id','y') 

這將產生:

print(newx) 
      x id   y 
-4800.1 -4800 1 25195.730 
-2800.1 -2800 1 15195.730 
-4800.2 -4800 2 7415.219 
-2800.2 -2800 2 5415.219 
-4800.3 -4800 3 7264.280 
-2800.3 -2800 3 7264.280