группирование данных даты с условием в кадре данных в R - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть CSV-файл с несколькими переменными, как показано ниже (только для примера):

Region    crop      product    date_periode

A         aaaa      bilon      2016052q

A         aaaa      mailon     2016021q 

B         cccc      drox       2016042q

A         cccc      marob      2015081q

C         dddd      salon      2016062q

C         dddd      dilon      2016071q

D         aaaa      daxon      2015032q

D         aaaa      bayon      2016042q

даты - периоды: 20170502q: вторая половина мая 2017 года, и я хочу сделать группировку особи на культуру и регион, например, каждый раз, когда число особей на дату для урожая в регионе составляет менее 5% от общего числа особей с такой же датой для урожая в регионе, эта дата группируется с соседними date (дата, в данном случае, может стать 2016062q-2016071q, если мы сгруппируем два периода, например), и каждый раз для каждой культуры в каждом регионе. если у нас есть эта таблица для примера:

region    crop       date         Numbre of ID    % of ID

A         aaaa    20170201q         1             1

A         aaaa    20170202q        44            48

A         aaaa    20170301q        30            33

A         aaaa    20170302q        14            15

A         aaaa    20170401q         1             1

A         aaaa    20170402q         1             1

A         aaaa    20170601q         1             1

я хочу получить эту таблицу после анализа

region      crop      date                    Number of ID      % of ID

A           aaaa      20170201q-20170202q         45              49

A           aaaa      20170301q                   30              33

A           aaaa      20170302q-20170601q         17              18 

Я не знаю, достаточно ли я ясен, но я ' м здесь, если у вас есть какие-либо вопросы выше, заранее спасибо

1 Ответ

0 голосов
/ 12 февраля 2020

Используя tidyverse, мы можем сделать это, используя:

df %>% 
group_by(Region, crop, date_periode) %>% 
summarise(number = n_distinct(product)) %>% 
ungroup() %>% 
left_join(  df %>% 
            group_by(Region, crop) %>% 
            summarise(number_t = n_distinct(product)) %>% 
            ungroup(), by = c("Region", "crop")) %>% 
mutate(Percent = number/number_t)

Я думаю, это то, к чему вы стремитесь? Я предполагаю, что Number - это общее значение product.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...