我有一些看起来像以下的纵向数据,除了更多的主题和时间:
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
答案 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")