我有一个数据A,由“名称”,“度量”组成。我有另一个由“类型”、“度量”组成的数据格式B。我想执行一个摘要操作使用每个‘名称’组的A在每个‘类型’组的B使用‘度量值’字段。例如:
A有:
Name | Measure
George 5
George 6
Tyrone 7
Tyrone 3B有:
Type | Measure
cold 3
cold 2
hot 1
hot 5我想做一个关于乔治和寒冷,乔治和热,泰隆和寒冷,泰隆和热的总结,在每一个总结中我找到了最小的绝对差(乔治在寒冷时是最小的(abs(5-3,5-2,6-3,6-2)) = 2,然后找出每个“名字”的“类型”,它的得分最低。对于包含许多组的大型数据集,我究竟如何做到这一点?
发布于 2020-08-14 19:10:55
也许有一种更简单的方法,但你可以:
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 0https://stackoverflow.com/questions/63418613
复制相似问题