我一直在做一个睡眠分析项目,现在我收集了一些数据,我想做点什么。首先,我已经注册了一段时间的睡眠运动,现在是.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 :(得分: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()