我有一个带多个变量的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
我不知道我是否足够清楚,但是如果您有任何上述疑问,我在这里,请先谢谢您
使用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)