2013-02-07 52 views
-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)給出得分。我怎樣才能使用重塑或任何其他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

,如果你的數據被稱爲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") 
+0

非常感謝。我一直困惑着什麼時候使用reshape()vs melt()。我正在嘗試使用重塑,因爲我之前看到它使用縱向數據將寬轉換爲長,反之亦然。 – iantist

+0

@iantist,請參閱[我的回答](http://stackoverflow.com/a/14765994/1270695)瞭解如何在基本R重塑中執行此操作。此外,爲避免將來對您的問題進行降價,請務必至少提供您所嘗試的代碼的指示。 – A5C1D2H2I1M1N2O1R2T1

1

基礎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