Мне нужна помощь для технической манипуляции на R плз.
Моя проблема: у меня есть данные наблюдений за птицами по наличию / отсутствию в разных типах местообитаний.Я хочу знать, насколько успешны наблюдения в этих различных средах обитания в зависимости от их диапазона поверхности:
data_observation <- data.frame(
habitat_bush = c(
0, 0, 0, 0, 10,
10, 30, 30, 30, 45,
65, 65, 65, 80, 80,
80, 90, 95, 100
),
obs = c(
"yes", "no", "no", "no", "yes",
"no", "no", "yes", "no", "yes",
"yes", "no", "yes", "no", "yes",
"yes", "yes", "yes", "yes"
)
)
Здесь у вас есть только данные для "Места обитания", но у вас есть еще 10 мест обитания.
С помощью коллеги мы сделали эту функцию, чтобы составить график отношения успешных наблюдений при разном размере области "габарита":
library(dplyr)
library(ggplot2)
library(scales)
plot_forest_test <- function(data = NULL, habitat_type = NULL, colour = NULL) {
x <- enquo(habitat_type)
fill <- enquo(colour)
ggdata <- data %>%
select(x = !!x, fill = !!fill) %>%
mutate(
group = case_when(
x == 0 ~ "[0]",
x > 0.0001 & x < 10.0001 ~ "]0-10]",
x > 10.0001 & x < 25.0001 ~ "]10-25]",
x > 25.0001 & x < 50.0001 ~ "]25-50]",
x > 50.0001 & x < 75.0001 ~ "]50-75]",
x > 75.0001 ~ "]75- 100]"
)
) %>%
select(-x) %>%
group_by(group, fill) %>%
count() %>%
group_by(group) %>%
group_modify(~ mutate(.data = .x, freq = n / sum(n)))
ggplot(data = ggdata, mapping = aes(x = group, y = freq, fill = fill)) +
geom_bar(stat = "identity") +
scale_fill_brewer(palette = "Greens") +
scale_y_continuous(labels = scales::percent) +
theme_minimal() +
labs(x = expr(!!x), fill = expr(!!fill))
}
plot_forest_test(data = data_observation, habitat_type = habitat_bush, colour = obs)
Это работает очень хорошо.Но наблюдение может зависеть от усилий, приложенных специалистами для поиска присутствия птицы.Итак, у меня есть такие данные:
data_observation_2 <- data.frame(
superficie_essence = c(
0, 0, 0, 0, 10,
10, 30, 30, 30, 45,
65, 65, 65, 80, 80,
80, 90, 95, 100
),
obs = c(
"yes", "no", "no", "no", "yes",
"no", "no", "yes", "no", "yes",
"yes", "no", "yes", "no", "yes",
"yes", "yes", "yes", "yes"
),
effort = c(low, low, mid-low, mid-low, low, mid-low, mid-low,
mid-high, mid-high, high, mid-low, mid-low, mid-high, mid-low, mid-high, high, high, mid-high, high)
)
Мои навыки R на этом заканчиваются.Я хочу иметь тот же ранее график, но подразделяется на тип_удобрения для каждой модальности типов мест обитания, в том же графическом (например, многоканальном графическом).Другими словами, я хочу 5 подграфов предыдущего графика с 1 барплотом по модальности усилий.Но у меня есть много данных, поэтому я хотел бы поместить эту процедуру в такую функцию:
plot_forest_test_2(data = data_observation, habitat_type = habitat_bush, effort = Q_effort, colour = obs)
Можете ли вы помочь мне, пожалуйста?Спасибо за вашу помощь!
cdlt