2011-10-05 25 views
0

我希望你不會發現我的問題太愚蠢,我做了很多研究,但似乎我無法解決如何解決這個非常煩人的問題。嗯,我有6個參與者(P)在實驗中的數據,每個參與者50個試驗(T)和10個條件(C)。所以我想創建一個數據框在r允許我把這些數據。 這個data.frame應該有3個因子(P,T和C),所以總行數(P * T * C)。對我來說,困難在於創建這一個,因爲我有6個參與者在10個變量(C)的100個obs(T)的6個數據幀中的數據。 我想先用這些因素創建空數據集,然後根據因子P,T和C複製6個data.set的值。任何幫助將不勝感激,我是新手。如何用3個因素創建data.frame?

謝謝。

+1

這純粹是一個代碼問題,而不是一個統計問題。它應該被遷移到SO R. – John

+0

你可能想要檢查stack()函數,它可以幫助你... – thias

回答

3

OK;首先,我們創建一個大的數據幀爲所有參與者:

result<-rbind(dfrforparticipant1, dfrforparticipant2,...dfrforparticipant6) #you'll have to fill out the proper names of the original data.frames 

接下來,我們添加一列的參與者ID:

numTrials<-50 #although 100 is also mentioned in your question 
result$P<-as.factor(rep(1:6, each=numTrials)) 

最後,我們需要從「寬」格式去「長」格式(我假設你的列名稱保存每個條件的結果稱爲C1,C2等;我也假設你的原始data.frames已經擁有一個名爲T的列來表示這個試驗),像這樣(未經測試,因爲您沒有提供示例數據):

orgcolnames<-paste("C", 1:10, sep="") 
result2<-reshape(result, varying=list(orgcolnames), v.names="val", idvar=c("T","P"), timevar="C", times=seq_along(orgcolnames), direction="long") 

你想要的是現在在result2

+0

非常感謝!它運作良好! – clowny

相關問題