如何将表的行名转换为向量

时间:2011-10-18 00:18:37

标签: r

我已使用table命令返回我的数据的统计信息:

subject<-c(4,4,2,2,3,3)
correct<-c(0,1,1,1,0,0)
test<-data.frame(subject,correct)
freq_test<-head(table(test$subject,test$correct))

这将返回一个如下所示的表

    0 1

  2 0 2

  3 2 0

  4 1 1

这很好,但问题是我想,第一列是vector而不是row.names(这样我就可以将它正确编码为“subject”)。 有没有办法让这个专栏以这种方式行事?

3 个答案:

答案 0 :(得分:11)

只需创建一个新的数据框,其中行名为freq_test作为第一列:

> df<-data.frame(as.numeric(rownames(freq_test)),freq_test)
> colnames(df)[1]="subject"
> df
  subject X0 X1
2       2  0  2
3       3  2  0
4       4  1  1
>

当然,您可以通过编辑上面的X0X1colnames(df)重命名为您想要的任何内容。

答案 1 :(得分:1)

如果你想要“长”格式的数据(对某些模型和绘图有用,特别是当你的表更复杂时),泛型函数as.data.frame的表方法将为你处理这个问题:

> as.data.frame(table(test))
  subject correct Freq
1       2       0    0
2       3       0    2
3       4       0    1
4       2       1    2
5       3       1    0
6       4       1    1

答案 2 :(得分:0)

我认为你应该使用构造data.frame的标准方法,它有name = values对:

test <- data.frame( subject=subject, correct=correct)

第一个subject将被解释为要引用的名称,第二个subject将被解释 ....即,将搜索封闭的环境名为subject的对象,其值将分配给“test”的“subject”列。