我有一些形式的数据:
date,time,val1,val2
20090503,0:05:12,107.25,1
20090503,0:05:17,108.25,20
20090503,0:07:45,110.25,5
20090503,0:07:56,106.25,5
Run Code Online (Sandbox Code Playgroud)
来自csv文件.我对R比较新,所以我试过了
data <-read.csv("sample.csv", header = TRUE, sep = ",")
Run Code Online (Sandbox Code Playgroud)
和使用POSIXlt,以及POSIXct在colClasses论证中,但我似乎无法从我的日期和时间数据创建一个列或"变量".我想这样做,所以我可以选择任意时间帧来计算运行统计数据,如max,min,mean(然后是boxplots等).
我还以为我可以将它转换为时间序列并以这种方式绕过它,
dataTS <-ts(data)
Run Code Online (Sandbox Code Playgroud)
但是我已经能够将开始,结束和频率用于我的优势.谢谢你的帮助.
在使用colClasses参数将数据读入R时,您无法执行此操作,因为数据跨越CSV文件中的两个"列".相反,加载数据并将date和time列处理为单个POSIXlt变量:
dat <- read.csv(textConnection("date,time,val1,val2
20090503,0:05:12,107.25,1
20090503,0:05:17,108.25,20
20090503,0:07:45,110.25,5
20090503,0:07:56,106.25,5"))
dat <- within(dat, Datetime <- as.POSIXlt(paste(date, time),
format = "%Y%m%d %H:%M:%S"))
Run Code Online (Sandbox Code Playgroud)
[我认为是年月日??,如果不使用"%Y%d%m %H:%M:%S"]
这使:
> head(dat)
date time val1 val2 Datetime
1 20090503 0:05:12 107.25 1 2009-05-03 00:05:12
2 20090503 0:05:17 108.25 20 2009-05-03 00:05:17
3 20090503 0:07:45 110.25 5 2009-05-03 00:07:45
4 20090503 0:07:56 106.25 5 2009-05-03 00:07:56
> str(dat)
'data.frame': 4 obs. of 5 variables:
$ date : int 20090503 20090503 20090503 20090503
$ time : Factor w/ 4 levels "0:05:12","0:05:17",..: 1 2 3 4
$ val1 : num 107 108 110 106
$ val2 : int 1 20 5 5
$ Datetime: POSIXlt, format: "2009-05-03 00:05:12" "2009-05-03 00:05:17" ...
Run Code Online (Sandbox Code Playgroud)
你现在可以删除date和`如果你愿意的时间:
> dat <- dat[, -(1:2)]
> head(dat)
val1 val2 Datetime
1 107.25 1 2009-05-03 00:05:12
2 108.25 20 2009-05-03 00:05:17
3 110.25 5 2009-05-03 00:07:45
4 106.25 5 2009-05-03 00:07:56
Run Code Online (Sandbox Code Playgroud)