如何获取data.frame并在R中创建一个宽矩阵

时间:2016-05-01 02:45:39

标签: 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 个答案:

答案 0 :(得分: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