2015-12-02 69 views
1

我一直在做一個睡眠分析項目一段時間,現在我收集了一些數據,我想做點什麼。首先,我已經註冊了我睡一會的運動,現在是一個.csv文件像這樣:將數據轉儲到數據幀,然後繪製

0:58 1:08 1:18 1:28 1:38 1:48 1:58 
3096 4062 903  113  1331 76  521 
0:30 0:40 0:50 1:00 1:10 1:20 1:30 
4081 1661 1198 70  841  1052 76 
0:47 0:57 1:07 1:17 1:27 1:37 1:47 
2327 1823 1354 1547 64  75  84 

第一行是在間隔10分鐘,第二個時間是數量運動。每對線都是一夜的睡眠,數據一直持續到喚醒時間到達。

現在,我必須將數據導入到R然後使用它。我通過使用read.csv()函數導入了數據。但是現在我被卡住了,我想我必須使用數據框來存儲數據,因爲我有一個數據的兩種類型是時間,另一個是整數。我已經使用了數組和矩陣,並且我無法真正理解數據框如何真正適合這個程序。在我理解數據框的情況下,我不知道如何處理不同大小的數組/框架,因爲每個夜晚都有不同的長度,這取決於我睡了多少。我想繪製平均夜間睡眠時間與平均移動的時間線。

我想知道我對使用數據框的假設是否正確,以及如何處理不同長度的數組以創建所有數組的平均值。

預先感謝您!


編輯

使用@Pierre Lafortune代碼:

library(ggplot2) 

df <-read.csv('/Users/jdmg718/Dropbox/GitHub/SleepAnalysisWithR/Movement.csv', stringsAsFactors=FALSE) 
s <- split(df, rep(1:2, nrow(df)/2)) 
newdf <- as.data.frame(sapply(s, function(u) unlist(t(u))), stringsAsFactors=FALSE) 
names(newdf) <- c('Time', 'Movements') 
newdf[,2] <- as.numeric(newdf[,2]) 

ggplot(newdf, aes(x=Time, y=Movements, group=1)) + geom_line() 

我收到以下錯誤:

Warning messages: 
1: In split.default(x = seq_len(nrow(x)), f = f, drop = drop, ...) : 
    largo de datos no es múltiplo de la variable de separación 
2: In eval(expr, envir, enclos) : NAs introducidos por coerción 
+0

很難理解你的要求沒有[重複的例子(HTTP:/ /adv-r.had.co.nz/Reproducibility.html)...當執行'a < - read.csv(「yourdata.csv」)'時,結果對象'a'是'data.frame' 。通常,'R'正確解釋你的變量是否是'factor','integer'或'numeric'類型。 – Stefan

回答

2

嘗試通過拆分類型的數據。然後,你可以創建你所需要的圖表:

df <- read.csv('sleep.csv', stringsAsFactors=FALSE) 
s <- split(df, rep(1:2, nrow(df)/2)) 
newdf <- as.data.frame(sapply(s, function(u) unlist(t(u))), stringsAsFactors=FALSE) 
names(newdf) <- c('Time', 'Movements') 
newdf[,2] <- as.numeric(newdf[,2]) 

線圖

library(ggplot2) 
ggplot(newdf, aes(x=Time, y=Movements, group=1)) + geom_line() 

enter image description here

+0

這是一個.csv文件,將'read.table()'工作嗎? – jdmg718

+0

使用'read.csv',我用它來把你的數據放到我的控制檯中 –

+0

確保設置'stringsAsFactors = FALSE' –

相關問題