【发布时间】:2020-10-30 16:11:30
【问题描述】:
在下面的数据集中,我如何创建一个新列 min.diff ,该列报告给定观察 x,x 与其组内任何其他观察 y 之间的最小距离(由group 专栏)?我想用abs(x-y)来测量x和y之间的距离。
set.seed(1)
df <- data.frame(
group = c('A', 'A', 'A', 'B', 'B', 'C', 'C', 'C'),
value = sample(1:10, 8, replace = T)
)
预期输出:
group value min.diff
1 A 9 2
2 A 4 3
3 A 7 2
4 B 1 1
5 B 2 1
6 C 7 4
7 C 2 1
8 C 3 1
我更喜欢使用dplyr 的解决方案。
我想到的唯一方法是通过添加更多行来扩展数据框,以获取组内的每个可能对,计算距离,然后过滤掉每个组中的最小值。有没有更紧凑的方式?
【问题讨论】:
-
您能否展示共享示例的预期输出?
-
@RonakShah 请检查编辑