Учитывая лучшее решение Андри, это будет в основном упражнение на иллюстрации POSIXlt.Используя предположения о классах ваших переменных, отмеченные выше, и используя mean
в качестве функции агрегирования:
aggregate(dfrm$x, list(dfrm$country, as.POSIXlt(dfrm$datetime)$year,
as.POSIXlt(dfrm$datetime)$mon), FUN=mean)
Group.1 Group.2 Group.3 x
1 United States 108 0 6015.395
Обратите внимание, что можно добавить 1900 к значению года POSIXlt, чтобы восстановить год и использовать значение месяцав качестве индекса в вектор-константу R 'month.abb' и добавление хороших меток столбцов:
aggregate(dfrm$x, list(Country=dfrm$country,
Year=1900+as.POSIXlt(dfrm$datetime)$year,
Month=month.abb[1+as.POSIXlt(dfrm$datetime)$mon]),
FUN=mean)
Country Year Month x
1 United States 2008 Jan 6015.395