如何将数据框与重复项和向量进行比较?
How to compare a data frame with duplicates and a vector?
我有一个数据框,其中一些 ID 出现了不止一次。我对这个 id 进行了唯一采样,现在我有了一个带有采样 id 的向量。现在我需要创建一个逻辑来告诉我数据框中的哪些行具有也出现在我的示例中的 ID。
我试过匹配功能,但它只选择第一次出现,我需要所有出现。
我也尝试过合并,但是数据集太大,所以没有内存可以做。
您可以使用 %in%
获取逻辑向量,使用 which
和 in
获取行索引。这是一个包含重复 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)
这是您可以使用 match
执行的操作(因为您正在尝试此功能):
x=match(df$id, mySample, nomatch = 0) > 0
如果 df$id
出现在 mySample
中,则逻辑向量为 TRUE
,否则为 FALSE
。
要检索相应的索引:
which(x==T)
我有一个数据框,其中一些 ID 出现了不止一次。我对这个 id 进行了唯一采样,现在我有了一个带有采样 id 的向量。现在我需要创建一个逻辑来告诉我数据框中的哪些行具有也出现在我的示例中的 ID。
我试过匹配功能,但它只选择第一次出现,我需要所有出现。
我也尝试过合并,但是数据集太大,所以没有内存可以做。
您可以使用 %in%
获取逻辑向量,使用 which
和 in
获取行索引。这是一个包含重复 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)
这是您可以使用 match
执行的操作(因为您正在尝试此功能):
x=match(df$id, mySample, nomatch = 0) > 0
如果 df$id
出现在 mySample
中,则逻辑向量为 TRUE
,否则为 FALSE
。
要检索相应的索引:
which(x==T)