我有一个包含各种传感器读数的CSV文件.
它看起来好像代表四个不同的时间序列,温度,运动,功率和电池,每个读数在稍微不同的时间进行.
dat <- read.csv(text = "id,device_id,type,value,timestamp
1432,4,temperature,21,2015-06-01T00:00:00Z
1433,4,motion,0,2015-06-01T00:00:15Z
1434,4,power,0,2015-06-01T00:00:30Z
1435,4,battery,4.16,2015-06-01T00:00:46Z
1448,4,temperature,21,2015-06-01T00:17:00Z
1449,4,motion,0,2015-06-01T00:17:15Z
1450,4,power,0,2015-06-01T00:17:30Z
1451,4,battery,4.16,2015-06-01T00:17:45Z
1464,4,temperature,21,2015-06-01T00:33:57Z")
str(dat)
'data.frame': 9 obs. of 5 variables:
$ id : int 1432 1433 1434 1435 1448 1449 1450 1451 1464
$ device_id: int 4 4 4 4 4 4 4 4 4
$ type : Factor w/ 4 levels "battery","motion",..: 4 2 3 1 4 2 3 1 4
$ value : num 21 0 0 4.16 21 0 0 4.16 21
$ timestamp: Factor w/ 9 levels "2015-06-01T00:00:00Z",..: 1 2 3 4 5 6 7 8 9
Run Code Online (Sandbox Code Playgroud)
如何根据时间操纵数据绘制四个图形?
您只需几行代码即可在R中轻松完成此操作.
第一步是将时间戳转换为POSIXct日期.最简单的方法是character在导入期间将此列强制为类:
dat <- read.csv(colClasses = c(timestamp = "character"),
text = "id,device_id,type,value,timestamp
1432,4,temperature,21,2015-06-01T00:00:00Z
1433,4,motion,0,2015-06-01T00:00:15Z
1434,4,power,0,2015-06-01T00:00:30Z
1435,4,battery,4.16,2015-06-01T00:00:46Z
1448,4,temperature,21,2015-06-01T00:17:00Z
1449,4,motion,0,2015-06-01T00:17:15Z
1450,4,power,0,2015-06-01T00:17:30Z
1451,4,battery,4.16,2015-06-01T00:17:45Z
1464,4,temperature,21,2015-06-01T00:33:57Z")
Run Code Online (Sandbox Code Playgroud)
然后转换为POSIXct.请参阅(完整日期)和(全职)?strptime的含义:%F%T
dat$timestamp <- as.POSIXct(dat$timestamp, format = "%FT%TZ")
str(dat)
'data.frame': 9 obs. of 5 variables:
$ id : int 1432 1433 1434 1435 1448 1449 1450 1451 1464
$ device_id: int 4 4 4 4 4 4 4 4 4
$ type : Factor w/ 4 levels "battery","motion",..: 4 2 3 1 4 2 3 1 4
$ value : num 21 0 0 4.16 21 0 0 4.16 21
$ timestamp: POSIXct, format: "2015-06-01 00:00:00" "2015-06-01 00:00:15" ...
Run Code Online (Sandbox Code Playgroud)
然后绘图使用ggplot2.例如:
library(ggplot2)
ggplot(dat, aes(x=timestamp, y = value, group = device_id)) +
geom_point() +
geom_line() +
facet_grid(type ~ ., scales = "free_y")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
168 次 |
| 最近记录: |