使用一个月内每日温度读数的大型数据集,我试图从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个温度读数)中提取最高和最低温度的功能?
任何抬头都表示赞赏。
答案 0 :(得分:3)
或使用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
答案 1 :(得分:1)
您可以在前两列使用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
的或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")