2009-12-30 63 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