【发布时间】:2021-01-03 09:43:46
【问题描述】:
我正在尝试确定数据集中的距离,但前提是它们满足特定标准。我在这里看到了很多关于确定两点之间距离的示例,但不确定如何指定我想要的点。
数据集(标题为 event.df)如下所示:
X Y Tag Date
34.355 -7.662 151401 2015-09-22
34.546 -7.016 151401 2015-09-22
34.425 -6.987 151401 2015-10-20
34.554 -7.803 151402 2015-10-22
34.555 -7.803 151402 2015-10-22
34.554 -7.804 151402 2015-10-22
我想说,如果标签 ID 相同,并且日期相同,请计算与这些点的距离(可能大于 2)。
【问题讨论】:
-
基本思想是按日期和 ID 拆分数据,然后使用您见过的其他解决方案之一。
split_data = split(event.df, paste(event.df$Tag, event.df$Date)),result <- lapply(split_data, <<distance_function>>) -
要获得更精确的帮助,请稍微编辑您的示例:看起来您共享的内容中只有第 1 行和第 3 行具有相同的 ID 和日期,因此结果将是一个距离。如果一组中可能有超过 2 个,请在您的示例中包括一组 2 个和一组 3 个。请指定您是否想要欧几里得距离以外的东西(例如,如果 X 和 Y 是经度和纬度)。并请展示您可能希望结果的外观,特别是如果有一组 3 个或更多。是否有一个 ID 列,以便您可以判断距离对应的集合中的哪些点?那么单例行呢?
-
是的,一组 2 应该只有一个距离。对于 3 个或更多,它可能是与任何点(1、2、3 等)或所有点的距离。欧几里得距离很好。如果日期中没有重复,则应忽略单例行。理想情况下,输出将进入一个新列
-
感谢您的回答。您能否像我提到的那样编辑您的示例,以便样本数据同时具有一组 2 和一组 3?
-
“对于 3 或更多,它可能是与任何点(1,2,3 等)或所有点的距离”......所以,你不在乎哪个?您想知道哪个 post-hoc 吗?只是在集合中随机选择一个其他点可以吗?
标签: r conditional-statements distance