【问题标题】:For two sets of co-ordinates, extracting the unique rows of Set A less Set B对于两组坐标,提取 Set A 减去 Set B 的唯一行
【发布时间】:2017-08-05 07:06:52
【问题描述】:

我有两组坐标:

  • 用 49,898 个 x 和 y 组合设置 A
  • 设置 B 有 36,404 个 x 和 y 组合。
  • (A 组包含 B 组中的所有组合以及额外的 13,494 个组合)
  • Excel 或 R 中的解决方案都很好

我想提取这组独特的 13,494 种组合。为了尝试使用 Excel 或 R 提取这些唯一值,我已将 Set B 的 x & y 坐标组合复制到与 Set A 相同的列中。

表格布局为两列 Xcod, Ycod : x and y example

我已经阅读了一些建议使用 excel 和 R 的帖子,它们部分解决了这个问题,除了输出总是 49,898 个组合,因为它们保持了“原始”的重复值集。我理解为什么会这样,但我想要完全删除这些重复项,以便我有一个包含 Set A 独特的 13,494 个组合的最终输出。

[Excel] 我使用了以下:Data -> Advanced Filter -> Unique records only

[R] 我使用了这个线程中的以下代码:

UniqRemDups <- unique(RemDups[,c('Xcod','Ycod')])

How to filter for unique combination of columns from an R dataframe

任何帮助/建议将不胜感激。

【问题讨论】:

  • 你能提供一个reproducible example吗?
  • 在这种特定情况下,您似乎有一个范围内的正整数坐标,以及 1000 的所有倍数(实际上是 5000)。因此,您可以将每个坐标对压缩成一个 32b 整数表示,例如(Xcod/1000)*1e4 + (Ycod/1000) 例如4405*1e4 + 4725 = 44054725
  • 你不想要两个集合之间的唯一组合,你只想要 Set A \ Set B,即 set 'less' 操作。这些不是组合,只是数据集的普通行。

标签: r excel unique combinations set-operations


【解决方案1】:

在 R 中使用 mgcv 中的 uniquecombs 函数的一种方法。

data <- structure(list(Xcod = c(4405000L, 4415000L, 4425000L, 4435000L, 
4445000L, 4455000L, 4465000L, 4475000L, 4435000L, 4495000L, 4505000L, 
4515000L, 4525000L, 4535000L, 4545000L, 4555000L, 4565000L, 4575000L, 
4585000L), Ycod = c(4725000L, 4725000L, 4725000L, 4725000L, 4725000L, 
4725000L, 4725000L, 4725000L, 4725000L, 4725000L, 4725000L, 4725000L, 
4725000L, 4725000L, 4725000L, 4725000L, 4725000L, 4725000L, 4725000L
)), .Names = c("Xcod", "Ycod"), class = "data.frame", row.names = c(NA, 
-19L))

library(mgcv)
unique_rows <- uniquecombs(data)

【讨论】:

  • OP 说他们有两个数据集,但您的示例只有一个..?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多