用R转置数据

时间:2013-07-11 10:29:03

标签: r reshape

我有以下数据集:

prod    month    count
sub12  2012-06  566
sub1    2012-06  10239
sub6    2012-06   524
sub12  2012-07   2360
sub1    2012-07   13853
sub6    2012-07    2352
sub12  2012-08   3950
sub1    2012-08   14738
sub6    2012-08   4104

我正试着这个:

prod    2012-06   2012-07
sub12  566          2360
sub1   10239       13853
sub6   524           2352

我运行了以下命令行:

aperm(table(data))
data.frame(table(data))

但是我得到了错误的结果。

我哪里错了,拜托?

2 个答案:

答案 0 :(得分:5)

搜索“reshape long wide”。

data <- read.table(text="prod    month    count
sub12  2012-06  566
sub1    2012-06  10239
sub6    2012-06   524
sub12  2012-07   2360
sub1    2012-07   13853
sub6    2012-07    2352
sub12  2012-08   3950
sub1    2012-08   14738
sub6    2012-08   4104",header=TRUE)

library(reshape2)
dcast(prod~month,data=data)
#    prod 2012-06 2012-07 2012-08
# 1  sub1   10239   13853   14738
# 2 sub12     566    2360    3950
# 3  sub6     524    2352    4104

答案 1 :(得分:0)

坚持使用基础R,您可以使用xtabs

> xtabs(count ~ prod + month, data)
       month
prod    2012-06 2012-07 2012-08
  sub1    10239   13853   14738
  sub12     566    2360    3950
  sub6      524    2352    4104

如果您希望data.frame作为输出,请将xtabsas.data.frame.matrix一起打包:

> as.data.frame.matrix(xtabs(count ~ prod + month, data))
      2012-06 2012-07 2012-08
sub1    10239   13853   14738
sub12     566    2360    3950
sub6      524    2352    4104