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()“手动”完成的那样从它们中获取这些向量和索引元素?
感谢您的帮助!
我们可以基于IDidx
和Weekidx
创建一个数据框,然后使用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
我正在尝试打印数据框中的特定观察结果。考虑这个简单的例子:
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()“手动”完成的那样从它们中获取这些向量和索引元素?
感谢您的帮助!
我们可以基于IDidx
和Weekidx
创建一个数据框,然后使用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