提取每日最大值和最小值

时间:2014-08-23 15:38:19

标签: r date max min temperature

使用一个月内每日温度读数的大型数据集,我试图从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个温度读数)中提取最高和最低温度的功能?

任何抬头都表示赞赏。

2 个答案:

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