Как считать уникальные записи, а не суммы значений (набор данных по окружающей среде) - PullRequest
2 голосов
/ 06 января 2020

Я провожу анализ на родной / не родной обложке на сайте восстановления. Данные организованы полигоном, затем пересекаются, затем прикрепляются. Мне все равно, есть ли у какой-нибудь одной булавки 1 родной или 3 местных вида - мне просто все равно, есть ли у нее. Сейчас необработанные данные выглядят так:

raw data

В конце я хочу, чтобы мои данные выглядели так:

desired data

Проблема в том, что сейчас мой код считает каждую запись для нативных, не нативных и т. Д. c. И суммируем их по каждому трансекту. Тем не менее, я хочу, чтобы он суммировал общее количество выводов, которые имеют нативный / не нативный / et c. Независимо от того, сколько их. Так, например, если на выводе 5 есть 3 натива, я все равно хотел бы, чтобы в итоговой таблице он считался 1 нативом. Кто-нибудь может помочь? Приведенный ниже код не может передавать данные, хотя:

mynewtable <- data %>% 
  count(polygon_id, transect, native_non_native) %>% 
  spread(native_non_native, n) 

1 Ответ

2 голосов
/ 07 января 2020

Похоже, у вас есть дубликаты на то, на что вы пытаетесь рассчитывать. Вы можете просто получить уникальный набор данных, на которые вы пытаетесь рассчитывать, и вы сможете получить желаемые результаты.

> df <- data.frame(polygon_id = replicate(10,'OW-M7'), 
                 transect = replicate(10,1),
                 pin_number = c(1,1,1,2,3,4,5,6,7,8), 
                 native_non_native =c(replicate(5,'Native'),replicate(5,'NoNative'))
                 )

> df
   polygon_id transect pin_number native_non_native
1       OW-M7        1          1            Native
2       OW-M7        1          1            Native
3       OW-M7        1          1            Native
4       OW-M7        1          2            Native
5       OW-M7        1          3            Native
6       OW-M7        1          4          NoNative
7       OW-M7        1          5          NoNative
8       OW-M7        1          6          NoNative
9       OW-M7        1          7          NoNative

> mynewtable <- df %>% select(polygon_id, transect, pin_number, native_non_native) %>% distinct() %>% count(polygon_id, transect, native_non_native) %>% spread(native_non_native, n)

> mynewtable
# A tibble: 1 x 4
  polygon_id transect Native NoNative
  <fct>         <dbl>  <int>    <int>
1 OW-M7             1      3        5

И, конечно, если это единственные столбцы, которые есть в вашем фрейме данных, вы можете просто проигнорировать шаг выбора и просто использовать различные

> mynewtable <- distinct(df) %>% count(polygon_id, transect, native_non_native) %>% spread(native_non_native, n)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...