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