Для начала я сгенерировал некоторые примеры данных, которые могут быть похожи на то, на что вы смотрите. Будет полезно включить что-то подобное в ваши вопросы в будущем, чтобы в ответе были учтены все причуды, которые могут возникнуть в вашем конкретном наборе данных.
df.values <- data.frame(lat = seq(44, 45, 0.01),
long = seq(90, 91, 0.01),
value_A = round(rnorm(n = 101,
mean = 10,
sd = 5),
0)
)
df.elevate <- data.frame(lat = seq(44, 45, 0.01),
long = seq(90, 91, 0.01),
elevation = round(rnorm(n = 101,
mean = 200,
sd = 50),
0)
)
Следующие шаги будут выполнены с использованием функций, найденных впакет dplyr. Поэтому установите его, если вы этого еще не сделали, а затем загрузите его в свою среду следующим образом:
library(dplyr)
Похоже, вы хотите взять эти два отдельных набора данных и объединить их, чтобы вы могли манипулировать ими ипоказать их вместе. Поскольку оба набора данных имеют значения (высоту и значение_А), собранные на уровне широты и долготы, они будут вашими переменными объединения. Если вы новичок в такого рода манипулировании данными, документация для dplyr очень полезна: (https://dplyr.tidyverse.org/reference/join.html).
df.join <- left_join(df.values, df.elevate, by = c("lat", "long"))
Что касается получения суммарного значения (например, среднего) для каждой уникальной пары высот и широты, попробуйте сгруппированное резюме. Это снова из dplyr, но я сделал это "аккуратно", используя каналы. Если вы не проданы на каналах, я рекомендую вам проверить эту статью: (https://www.datacamp.com/community/tutorials/pipe-r-tutorial)
df.smooth <- df.join %>%
group_by(lat, elevation) %>%
summarise(mean_A = mean(value_A, na.rm = T))
Используя это, вы можете изменить тип сводной статистики, который вы хотите, изменив функцию внутри суммирования. Например, вы можете принять только самое высокое значение.
df.smooth <- df.join %>%
group_by(lat, elevation) %>%
summarise(mean_A = max(value_A, na.rm = T))
Еслиу вас есть другие вопросы, прокомментируйте этот ответ.