2011-05-02 31 views
1


我想栈帧,但我觉得我不使用正确的方法将其插入...产生R中的向量和堆叠框架

myframe 
sex = F 

    q8 
cars N U Y 
     1 35 31 10 
     2 34 23 7 
     3 132 109 35 
     4 38 36 14 
     5 7 5 2 

, , sex = M 

    q8 
cars N U Y 
     1 49 22 16 
     2 24 13 8 
     3 136 52 33 
     4 37 31 32 
     5 15 10 4 

f = c(myframe[1:15]) 
m = c(myframe[16:30]) 

S <- stack(data.frame(f,m)) 


names(S)=c("num","gender") 
group=c("1","1","1","2","2","2","3","3","3","4","4","4","5","5","5","6","6","6","1","1","1","2","2","2","3","3","3","4","4","4","5","5","5") 

num=S$num 
gender=S$gender 
twoway.df=data.frame(num,group,gender) 
twoway.df 
1 1 35 f 
2 1 31 f 
3 1 10 f 
4 2 24 f 
5 2 13 f 
     .... 

你可以帮我做的更好?

+0

这里不太清楚你的意思。你可能想编辑你的文章。我相信你有一个有两列的数据框,每个性别对应一个数据框,你希望它变成一个数据框,一列保存所有数据,另一列保存性别?如果是这样,你可以检查吗?reshape – 2011-05-02 09:27:08

+0

我相信group = c(1,1,1,2,2,2,3,3,3 ”, “4”, “4”, “4”, “5”, “5”, “5”, “6”, “6”, “6”, “1”, “1”, “1”, 2,2,2,3,3,3,4,4,4,5,5,不是正确的方法吗? – user494766 2011-05-02 10:06:33

+0

是否有更多的压缩表达? 我无法编辑我的帖子。我按回车但它不工作:( – user494766 2011-05-02 10:08:04

回答

3

要将表转换为data.frame,基函数as.data.frame.table应该可以工作。

这里,不过,我会怎么做:

myframe <- as.table(array(c(35, 34, 132, 38, 7, 31, 23, 109, 36, 5, 
          10, 7, 35, 14, 2, 49, 24, 136, 37, 15, 
          22, 13, 52, 31, 10, 16, 8, 33, 32, 4), 
          dim=c(5, 3, 2), 
          dimnames=list(cars=1:5, q8=c("N","U","Y"), 
              sex=c("F","M")))) 
library(reshape) 
melt(myframe) 

为得到一个data.frame所有变量。如果您只想将q8sex作为您的data.frame中的因子,请改为使用melt(myframe)[,-1]

请参阅help(melt.array)了解更多信息。

+0

非常感谢你的答案 – user494766 2011-05-02 11:18:57