将数据转储到数据框,然后绘制

时间:2015-12-02 19:29:58

标签: r csv

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

1 个答案:

答案 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()

enter image description here