具有R中数据框中条件的日期数据分组

问题描述 投票:0回答:1

我有一个带多个变量的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月下半年我想对每个作物和地区进行分组,例如,每当某个区域中某个作物的日期的个体数量少于该区域中某个作物相同日期的个体总数的5%时,该日期与相邻日期分组在一起(例如,如果我们将两个时期分组,则该日期可以变成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 

我不知道我是否足够清楚,但是如果您有任何上述疑问,我在这里,请先谢谢您

r dataframe grouping
1个回答
0
投票

使用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)
© www.soinside.com 2019 - 2024. All rights reserved.