В настоящее время у меня есть следующий формат данных:
df = data.frame(c(rep("A", 12), rep("B", 12)), rep(1:12, 2), seq(-12, 11))
colnames(df) = c("station", "month", "mean")
df
df_master = data.frame(c(rep("A", 10), rep("B", 10)), rep(c(27:31, 1:5), 2), rep(c(rep(1, 5), rep(2, 5)), 2), rep(seq(-4,5), 2))
colnames(df_master) = c("station", "day", "month", "value")
df_master
Фактически df - это среднемесячное значение для каждой станции, и я хочу вычислить новую переменную в наборе данных df_master, которая вычисляет разницу от месячной среднее значение для каждого ежедневного наблюдения. Мне удалось сделать это с помощью общего среднего значения, включающего все данные, но поскольку средние значения различаются для каждой станции, поэтому я хотел бы указать новую переменную станцию, указав c.
. Я попробовал следующее код для соответствия месячному значению, но в настоящее время он не учитывает различия между станциями:
df_master$mean = df$mean[match(df_master$month, df$month)]
df_master = df_master %>% mutate(diff = value - mean)
Как я могу продвинуться дальше, чтобы средние значения принимались для каждой станции?