如何将数据框与重复项和向量进行比较?

时间:2016-06-17 12:58:38

标签: r dataframe logical-operators sample

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

我尝试了匹配功能,但它只选择了第一个外观,我需要所有外观。

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

2 个答案:

答案 0 :(得分:2)

您可以使用%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)

答案 1 :(得分:2)

这是你可以使用match(当你尝试这个功能时):

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

如果TRUE出现在df$idmySample出现FALSE,则会为您提供which(x==T) 的逻辑向量。

检索相应的指数:

initalRoute