如何解决用公共数值字段汇总2个单独数据帧的同时group_by
我有一个由“名称”,“度量”组成的数据框A。我有另一个由“类型”,“度量”组成的数据框B。 我想使用“度量”字段对B的每个“类型”组使用A的每个“名称”组执行汇总操作。例如:
A具有:
Name | Measure
George 5
George 6
Tyrone 7
Tyrone 3
B具有:
Type | Measure
cold 3
cold 2
hot 1
hot 5
我想对George和感冒,George和热,Tyrone和感冒,Tyrone和热感做一个总结,在每个总结中,我找到最小的绝对差值(George在感冒时应为min(abs(5-3, 5-2、6-3、6-2))= 2,然后为得分最低的每个“名称”找到“类型”。对于具有多个组的大型数据集,我该怎么做? >
解决方法
可能有一种更简单的方法,但是您可以这样做:
library(tidyverse)
crossing(
distinct(A,Name),distinct(B,Type)
) %>%
left_join(A,by = 'Name') %>%
left_join(B,by = 'Type') %>%
group_by(Name,Type) %>%
summarise(minAbsDiff = min(abs(Measure.x - Measure.y))) %>%
group_by(Name) %>%
slice(which.min(minAbsDiff))
输出:
# A tibble: 2 x 3
# Groups: Name [2]
Name Type minAbsDiff
<fct> <fct> <int>
1 George hot 0
2 Tyrone cold 0
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。