У меня есть данные, собранные на нескольких сайтах.На каждом участке были идентифицированы виды (Виды) и подсчитаны (Количество).Я также записал расстояние, которое они произошли от меня (Расстояние).Примерный набор данных:
library(tidyverse)
library(dplyr)
Data <- data.frame(
Site = c("1", "1", "1", "1", "2", "3", "3"),
Species = c("abc", "bcd", "abc", "kjh", "jh", "abc", "gd"),
Number = c(10,1,1,1,1,1,1),
Distance = c("50m", "60m", "In", "In", "Out", "In", "In")
)
Я хочу рассчитать: (A) количество уникальных видов и (B) количество особей каждого вида на каждом участке.Тем не менее, я хочу отфильтровать все расстояния == "Out".Я попробовал следующий фильтр:
Filtered <- Data %>%
filter(Distance %in% c(
"50m",
"60m",
"In"))
И затем создал мое резюме:
summary <- Filtered %>%
group_by(Site) %>%
summarize(richness = n_distinct(Species), count = sum(Number))
summary
# A tibble: 2 x 3
Site richness count
<fct> <int> <dbl>
1 1 3 13
2 3 2 2
Но мне действительно нужно:
# A tibble: 3 x 3
Site richness count
<fct> <int> <dbl>
1 1 3 13
2 2 0 0
3 3 2 2
Другими словами,Я не хочу, чтобы сайты "Out" были включены в итоговые расчеты, но я хочу показать, что на расстояниях "non-Out" было 0 видов.
Есть ли лучший способ, которым япропал?