2009-12-30 104 views
0

我有一個數據集,看起來像這樣:數據操作與R:重組數據

a <- data.frame(rep(1,5),1:5,1:5) 
b <- data.frame(rep(2,5),1:5,1:5) 
colnames(a) <- c(1,2,3) 
colnames(b) <- c(1,2,3) 
c <- rbind(a,b) 

    1 2 3 
1 1 1 1 
2 1 2 2 
3 1 3 3 
4 1 4 4 
5 1 5 5 
6 2 1 1 
7 2 2 2 
8 2 3 3 
9 2 4 4 
10 2 5 5 

,但我希望它被重組到這一點:

2_1 2_2 3_1 3_2 
    1 1 1 1 1 
    2 2 2 2 2 
    3 3 3 3 4 
    4 4 4 4 4 
    5 5 5 5 5 

回答

4
a <- data.frame(rep(1,5),1:5,1:5) 
b <- data.frame(rep(2,5),1:5,1:5) 
colnames(b) <- colnames(a) <- paste("a", c(1,2,3), sep='') 
d <- rbind(a,b) 
library(reshape) 
recast(d, a2 ~ a1, measure.var="a3") 

我改變你的榜樣稍微,因爲它有數字作爲變量名稱。這是不推薦的,因爲它允許下面的廢話:

"1" <- 3 
print(1) 
[1] 1 
print("1") 
[1] "1" 
print(`1`) 
[1] 3 

需要我說更多?

+0

爲什麼不建議將數字作爲變量名稱? – 2009-12-30 10:33:40

+1

Eduardo是對的。 R不允許存儲以數字開頭的變量。試試這個:1b < - 1; b1 < - 1.如果您曾附加過數據集,則可能會遇到麻煩。 – Shane 2009-12-30 12:10:21

+0

感謝您的解釋!非常感激 – 2009-12-31 21:27:33