Если я правильно понял. Вы хотите таблицу, которая показывает количество «1» на каждом сайте и для каждого «элемента» списка удовлетворительных. Следующий подход сначала преобразует данные в длинную форму, отфильтровывает пропуски, а затем таблицы площадок по сравнению с другими столбцами в исходном наборе данных. Попробуйте это:
library(dplyr)
library(tidyr)
example.data <- data.frame( site = c(1,1,1,2,2,2,3,3,3), s1_1 = c(NA,NA,NA,1,NA,NA,1,1,NA), s1_2 = c(1,NA,NA,1,1,NA,1,1,1), s1_3 = c(1,1,1,1,1,NA,1,NA,NA) )
example.data
#> site s1_1 s1_2 s1_3
#> 1 1 NA 1 1
#> 2 1 NA NA 1
#> 3 1 NA NA 1
#> 4 2 1 1 1
#> 5 2 NA 1 1
#> 6 2 NA NA NA
#> 7 3 1 1 1
#> 8 3 1 1 NA
#> 9 3 NA 1 NA
# Using gather
example.data %>%
gather(satis.list, value, -site) %>%
filter(!is.na(value)) %>%
select(satis.list, site) %>%
table()
#> site
#> satis.list 1 2 3
#> s1_1 0 1 2
#> s1_2 1 2 3
#> s1_3 3 2 1
Создано в 2020-03-16 пакетом Представлять (v0.3.0)