使用一个月的每日温度读数的大型数据集,我试图从7个不同的记录器中提取每日最高和最低温度。
数据由7个不同温度记录仪在31天内的24小时读数(每小时记录1个温度)组成。
数据集是这样的:
Tort date time ibutton.temp
ABD 01/03/12 00:05:01 28.622
ABD 01/03/12 01:05:01 28.122
ABD 01/03/12 02:05:01 28.122
ABD 01/03/12 03:05:01 28.122
ABD 01/03/12 04:05:01 28.122
ABD 01/03/12 05:05:01 27.622
ABD 01/03/12 06:05:01 27.123
.
.
.
.
.
BCY 01/03/12 00:05:01 27.289
BCY 01/03/12 01:05:01 27.485
是否有函数可以提取整个月每一天的最高和最低温度(即24个温度读数)?
或者使用data.table
(如果dat
是数据)
library(data.table)
setDT(dat)[, list(Max=max(ibutton.temp), Min=min(ibutton.temp)), by=list(Tort, date)]
# Tort date Max Min
#1: ABD 01/03/12 28.622 27.123
#2: BCY 01/03/12 27.485 27.289
您可以在前两列使用aggregate
> aggregate(dat$ibutton.temp, dat[1:2], function(x) {
c(max = max(x), min = min(x)) })
# Tort date x.max x.min
# 1 ABD 01/03/12 28.622 27.123
# 2 BCY 01/03/12 27.485 27.289
或summaryBy
from package doBy
> library(doBy)
> summaryBy(ibutton.temp~Tort+date, dat, FUN = c(max, min))
# Tort date ibutton.temp.max ibutton.temp.min
# 1 ABD 01/03/12 28.622 27.123
# 2 BCY 01/03/12 27.485 27.289
,
> dat <- read.table(h=T, text = "Tort date time ibutton.temp
ABD 01/03/12 00:05:01 28.622
ABD 01/03/12 01:05:01 28.122
ABD 01/03/12 02:05:01 28.122
ABD 01/03/12 03:05:01 28.122
ABD 01/03/12 04:05:01 28.122
ABD 01/03/12 05:05:01 27.622
ABD 01/03/12 06:05:01 27.123
BCY 01/03/12 00:05:01 27.289
BCY 01/03/12 01:05:01 27.485")