Вот возможное решение с использованием пакета plyr
library(plyr)
# create a dummy data frame
df = data.frame(date = sample(LETTERS, 100, replace = T),
month = sample(12, 100, replace = T),
rainfall = sample(1000, 100, replace = F));
# use plyr to figure out max rainfall and date for each month
df.max = ddply(df, .(month), summarize,
max.rain = max(rainfall),
date.max.rain = date[which.max(rainfall)])
Дайте мне знать, если это работает.
РЕДАКТИРОВАТЬ.Если имеется несколько дат с максимальным количеством осадков, код необходимо слегка изменить
# find max rainfall for each month
df.max = ddply(df, .(month), transform, max.rain = max(rainfall))
# extract subset such that max.rain = rainfall
df.max = subset(df.max, max.rain == rainfall)