【问题标题】:How to compare a data frame with duplicates and a vector?如何将数据框与重复项和向量进行比较?
【发布时间】:2016-06-17 12:58:37
【问题描述】:

我有一个数据框,其中一些 ID 出现了不止一次。我对这个 id 进行了唯一采样,现在我有了一个带有采样 id 的向量。现在我需要创建一个逻辑来告诉我数据框中哪些行的 id 也出现在我的示例中。

我尝试了匹配功能,但它只选择第一次出现,我需要所有出现。

我也尝试过合并,但数据集太大,所以没有内存可以做。

【问题讨论】:

  • mydf$idcol %in% idsample 用于逻辑索引。
  • @PierreLafortune 这种情况下的礼仪是什么?我的回答是否超出了您的评论,还是应该删除它?无论哪种方式我都很好。
  • 不不删,我留下评论,你可以回答以举例展开
  • @PierreLafortune 好的。感谢您的指导。

标签: r dataframe logical-operators sample


【解决方案1】:

您可以使用%in% 获取逻辑向量,使用whichin 获取行索引。这是一个包含重复 ID 的可重现示例。

set.seed(1234)
df <- data.frame(id=sample(1:80, 100, replace=TRUE), b=rnorm(100))
mySample <- seq(1, 80, by=6)

#logical vector length of nrow(df)
myRows <- df$id %in% mySample
# row indices
myIndices <- which(df$id %in% mySample)

【讨论】:

    【解决方案2】:

    这是您可以使用match 执行的操作(当您尝试此功能时):

    x=match(df$id, mySample, nomatch = 0) > 0
    

    如果df$id 出现在mySampleFALSE 中,它会为您提供TRUE 的逻辑向量。

    要检索相应的索引:

    which(x==T)
    

    【讨论】:

      猜你喜欢
      • 2015-11-02
      • 1970-01-01
      • 2015-08-04
      • 1970-01-01
      • 2021-08-21
      • 2021-12-29
      • 2021-09-15
      相关资源
      最近更新 更多