-1

我有一些纵向数据,除了更多的主题和时间外,如下所示:

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 
4

2 回答 2

1

reshape如果您知道如何指定输入,Base R 的函数也可以很好地解决这些类型的问题。

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
于 2013-02-08T05:02:17.110 回答
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")
于 2013-02-07T19:32:06.780 回答