重塑纵向数据的范围很广

时间:2013-02-07 19:27:35

标签: r reshape

我有一些看起来像以下的纵向数据,除了更多的主题和时间:

Date        Sub1  Sub2   Sub3 
8/10/2012   19.0  18.9   20.7 
8/13/2012   19.0  19.1   19.5 

我有一个日期,每个主题(sub1,sub2和sub3)都有一个分数。如何使用reshape或任何其他R包将其更改为长格式? 所以它看起来像这样:

Subject Score Date
Sub1    19.0  8/10/2012
Sub1    19.0  8/13/2012
Sub2    18.9  8/10/2012
Sub2    19.1  8/13/2012
Sub3    20.7  8/10/2012
Sub3    19.5  8/13/2012 

2 个答案:

答案 0 :(得分:1)

如果您知道如何指定输入,Base R的reshape函数也适用于这些类型的问题。

reshape(dat, direction = "long", 
        idvar = "Date", timevar = "Subject", 
        varying = 2:ncol(dat), sep = "")
#                  Date Subject  Sub
# 8/10/2012.1 8/10/2012       1 19.0
# 8/13/2012.1 8/13/2012       1 19.0
# 8/10/2012.2 8/10/2012       2 18.9
# 8/13/2012.2 8/13/2012       2 19.1
# 8/10/2012.3 8/10/2012       3 20.7
# 8/13/2012.3 8/13/2012       3 19.5

答案 1 :(得分:0)

如果您的数据被调用dat

dat <- read.table(text="Date        Sub1  Sub2   Sub3 
                    8/10/2012   19.0  18.9   20.7 
                    8/13/2012   19.0  19.1   19.5 ",header=TRUE)

  library(reshape2)
  melt(dat)

  # explicitly you would use Date as AN id
  # melt(dat, id = "Date")