1) Это можно сделать компактно, используя zoo:
L <- "Date,DBT
01/01/2000 01:00,30
01/01/2000 02:00,31
01/01/2000 03:00,33
12/31/2000 23:00,25"
library(zoo)
stat <- function(x) c(min = min(x), max = max(x), mean = mean(x))
z <- read.zoo(text = L, header = TRUE, sep = ",", format = "%m/%d/%Y", aggregate = stat)
Это дает:
> z
min max mean
2000-01-01 30 33 31.33333
2000-12-31 25 25 25.00000
2) вот решение, которое использует только ядро R:
DF <- read.csv(text = L)
DF$Date <- as.Date(DF$Date, "%m/%d/%Y")
ag <- aggregate(DBT ~ Date, DF, stat) # same stat as in zoo solution
Последняя строка дает:
> ag
Date DBT.min DBT.max DBT.mean
1 2000-01-01 30.00000 33.00000 31.33333
2 2000-12-31 25.00000 25.00000 25.00000
РЕДАКТИРОВАТЬ: (1) С тех пор как это впервые появилось аргумент text=
для read.zoo
был добавлен в пакет зоопарка.(2) незначительные улучшения.