R中的逐元素子集

Element-wise subsetting in R

我正在尝试打印数据框中的特定观察结果。考虑这个简单的例子:

df <- data.frame(ID = c(1,1,1,2,2,2,3,3),
                 Week = c(1,2,2,1,1,2,1,1),
                 Y = c(4,2,6,7,5,3,1,9))

我想(只)打印(ID = 1 & Week = 2)、(ID = 2 & Week = 1)以及(ID = 3 & Week = 1)的行,给这个输出:

rbind(df[(df$ID == 1) & (df$Week == 2),],
      df[(df$ID == 2) & (df$Week == 1),],
      df[(df$ID == 3) & (df$Week == 1),])

用于索引的值存储在每个变量的向量中:

IDidx <- c(1,2,3)
Weekidx <- c(2,1,1)

是否有任何解决方案可以像我使用 rbind()“手动”完成的那样从它们中获取这些向量和索引元素?

感谢您的帮助!

我们可以基于IDidxWeekidx创建一个数据框,然后使用dplyr包中的semi_join

inx <- data.frame(ID = IDidx, Week = Weekidx)

library(dplyr)

df %>% semi_join(inx, by = c("ID", "Week"))
#   ID Week Y
# 1  1    2 2
# 2  1    2 6
# 3  2    1 7
# 4  2    1 5
# 5  3    1 1
# 6  3    1 9