2016-05-01 39 views
1

鉴于如何采取data.frame,使R中

classifications.factor <- factor(c('x','x','x','y','y','y','z','z','z')) ; 
    questions.factor <- factor(c('a','b','c','a','b','c','a','b','c')) ; 
    answers.vector <- c(1,2,3,4,2,3,1,2,3) ; 

    result.data.frame = data.frame(classifications.factor, questions.factor, answers.vector) ; 

    colnames(result.data.frame) <- c('c','q','a') ; 

    result.data.frame ; 

返回

 c q a 
    1 x a 1 
    2 x b 2 
    3 x c 3 
    4 y a 4 
    5 y b 2 
    6 y c 3 
    7 z a 1 
    8 z b 2 
    9 z c 3 

广矩阵什么命令可以把这个结果弄成

 c.x q.x a.x c.y q.y a.y c.z q.z a.z 
    1 x a 1 y a 4 z a 1 
    2 x b 2 y b 2 z b 2 
    3 x c 3 y c 3 z c 3 

+1

需要注意的是矩阵设计为只放置一个类型的值,所以字符或数字来完成。 –

回答

3

这可以用base R

do.call(cbind,split(result.data.frame, result.data.frame$c)) 
# x.c x.q x.a y.c y.q y.a z.c z.q z.a 
#1 x a 1 y a 4 z a 1 
#2 x b 2 y b 2 z b 2 
#3 x c 3 y c 3 z c 3