Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中的数据帧中使用条件对日期数据进行分组_R_Dataframe_Grouping - Fatal编程技术网

在R中的数据帧中使用条件对日期数据进行分组

在R中的数据帧中使用条件对日期数据进行分组,r,dataframe,grouping,R,Dataframe,Grouping,我有一个包含多个变量的csv文件,如下所示(仅举个例子): 日期为:20170502q:2017年第二季度 我想对每种作物和每个地区的个体进行分组,比如每次某一地区某一作物的某一日期的个体数量少于该地区某一作物同一日期的个体总数的5%时,该日期与相邻日期进行分组(例如,如果我们将两个时期进行分组,则在本例中,日期可以为2016062q-2016071q),并且每个地区的每个文化的每个时间。 如果我们有此表作为示例: region crop date Numbre

我有一个包含多个变量的csv文件,如下所示(仅举个例子):

日期为:20170502q:2017年第二季度 我想对每种作物和每个地区的个体进行分组,比如每次某一地区某一作物的某一日期的个体数量少于该地区某一作物同一日期的个体总数的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 

我不知道我是否足够清楚,但如果您有任何上述问题,我会在这里,提前感谢您使用
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
是全部不同的
产品

你能提供一个预期的输出吗?我很乐意帮助你,但不清楚你的意思:“占个人总数的5%”-->这里的个体数量是多少?@Georgery:例如,如果你取region=A和crop=aaaa,这个区域的这个作物的个体总数是=2,这意味着每个日期都有50%的个体在这个区域,我们可以保持日期不变,我想在其他情况下看到每个日期对于每个地区的每种作物,如果每个日期的总个体数超过该地区作物总个体数的5%,如果不是这样,我必须将一些个体(日期)分组,使其能够超过5%@akash87我在上面添加了另一个例子感谢什么是
id数
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)