Я не уверен, что вы имеете в виду под "таблицей": используете ли вы пакет data.table
или просто функцию read.table()
базы R. Я дам ответ, который работает для обоих подходов, но неоптимальный , если вы используете data.table
.
. Наиболее удобный способ решения вашей проблемы - использовать пакеты семейства tidyverse
: dplyr
для обработки данных и lubridate
для преобразования дат, например:
library(dplyr)
library(lubridate)
res_df <- obs_df %>%
mutate(calend_day = as_date(date)) %>%
group_by(calend_day, site) %>%
summarize(
max_obs = max(obs),
max_mod = max(mod),
mean_obs = mean(obs),
mean_mod = mean(mod)
) %>%
# set a desired order of columns
select(calend_day, max_obs, max_mod, mean_obs, mean_mod, site)
Тип столбца date
предполагается символом, поэтому stringsAsFactors = FALSE
следует установить при использовании read.table()
.
Надеюсь, это поможет:)