r - 在R中的数据框中使用条件对日期数据进行分组
问题描述
我有一个包含多个变量的 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)
我想这就是你的意思?我假设Number
是完全不同的product
。
推荐阅读
- log4j - log4j2 的问题
- javascript - 我们应该如何处理 WebApp 中的事件?许多事件处理程序与一个
- http-headers - Content-Type 多部分标头中的“通过电子邮件网关非常强大”是什么意思?
- python - 如何删除 ValueError:值的长度(55)与 python 中的索引长度(100)不匹配?
- r - 为什么我收到错误为“mapIds(GeneCol)中的错误:找不到函数“mapIds””
- node.js - JSON 响应不包含字段值
- python - 访问当前用户位置并显示其附近的所有用户
- python - 如何将带有整数的字符串拆分为两个变量?
- firebase - Firebase AUTH - 超出限制功能结果
- excel - 使用excel vba进行多个网页归档