2013-08-30 71 views
0

準備一個愚蠢的問題...R:在時間序列上繪製重複

我有一個大的數據集,看起來有點像這個..

structure(list(V1 = structure(c(4L, 3L, 6L, 5L, 1L, 2L), .Label = c("1012", 
"225", "58", "602", "62", "818"), class = "factor"), V2 = structure(c(4L, 
3L, 6L, 5L, 1L, 2L), .Label = c("1012", "249", "58", "603", "62", 
"824"), class = "factor"), V3 = structure(c(6L, 2L, 5L, 4L, 1L, 
3L), .Label = c("1014", "117", "290", "442", "831", "992"), class = "factor"), 
V4 = structure(c(6L, 3L, 5L, 2L, 1L, 4L), .Label = c("1033", 
"1055", "166", "377", "831", "992"), class = "factor"), V5 = structure(c(3L, 
4L, 6L, 2L, 1L, 5L), .Label = c("1033", "1067", "1575", "190", 
"378", "832"), class = "factor"), V6 = structure(c(3L, 4L, 
6L, 2L, 1L, 5L), .Label = c("1034", "1069", "1575", "221", 
"379", "833"), class = "factor"), V7 = structure(c(3L, 5L, 
6L, 2L, 1L, 4L), .Label = c("1063", "1092", "2351", "379", 
"406", "834"), class = "factor")), .Names = c("V1", "V2", 
"V3", "V4", "V5", "V6", "V7"), class = "data.frame", row.names = c(NA, 
6L)) 

每一行代表一個主題,並且沿着列移動的每個值表示鼠標按下槓桿的會話內的時間(以秒爲單位)。我想用ggplot來製作一個類似於this的數字。然而,我似乎無法弄清楚如何繪製一個時間序列,因爲ggplot似乎想要一個名爲x和y的離散值。我可以想出勞動密集型的方法來實現它,但我知道我只是想念一些簡單的東西。

+0

ggplot2函數可處理長格式的數據。你需要在這些數據上使用reshape2 :: melt來獲得長格式。它應該是一塊蛋糕。 (並且應該有很多有效的例子。) –

+0

我會研究它。謝謝!仍然試圖圍繞看似無休止的方式在R中對數據進行格式化,以使其在各種功能中發揮出色。 – user2510207

回答

0

迪文在上面的評論中爲此提供了答案。我想我可以擴展一下,以防有人在類似的經驗不足的情況下絆倒這一點。我的解決方案是安裝reshapeGUI包作爲學習參數結構的一種快速方法。

加載GUI後,我把上面的數據,做出的行數到一個名爲「主題」的新列,運行以下

test.melt <- melt(data = test, id.vars=c('Subjects'),  
measure.vars=c('V1','V2','V3','V4','V5','V6','V7')) 

這給了我下面描述的結構,這是很容易繪製成一個時間序列顯示每個複製/主題的值...

structure(list(subject = c("1", "2", "3", "4", "5", "6", "1", 
"2", "3", "4", "5", "6", "1", "2", "3", "4", "5", "6", "1", "2", 
"3", "4", "5", "6", "1", "2", "3", "4", "5", "6", "1", "2", "3", 
"4", "5", "6", "1", "2", "3", "4", "5", "6"), response = structure(c(1L, 
1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 
3L, 4L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 
6L, 6L, 6L, 7L, 7L, 7L, 7L, 7L, 7L), .Label = c("V1", "V2", "V3", 
"V4", "V5", "V6", "V7"), class = "factor"), time = c("602", "58", 
"818", "62", "1012", "225", "603", "58", "824", "62", "1012", 
"249", "992", "117", "831", "442", "1014", "290", "992", "166", 
"831", "1055", "1033", "377", "1575", "190", "832", "1067", "1033", 
"378", "1575", "221", "833", "1069", "1034", "379", "2351", "406", 
"834", "1092", "1063", "379")), .Names = c("subject", "response", 
"time"), row.names = c(NA, -42L), class = "data.frame") 

謝謝迪文。