使用 dplyr 从矩阵中提取匹配行
pulling up matching rows from a matrix using dplyr
假设我有以下内容:
myDF <- cbind.data.frame("Id" = rep(1:5, each = 4), values = c(rnorm(4,0,1), rnorm(4, 10, 1), rnorm(4, 20,1 ), rnorm(4, 30,1), rnorm(4, 40,1)))
idVector <- sample(1:5, size = 5, replace = TRUE)
如果我的 `idVector = 4,4,3,2,1',我想拉取 ID 为 4 的所有行,然后再次拉取 Id 4,然后是 3,然后是 2,然后是 1。
我可以使用以下方法来完成:
do.call("rbind", lapply(idVector, function(x, currentDF){
currentDF[currentDF$Id == x,]}
, myDF))
是否有使用 dplyr 或 plyr 的更简洁的方法?
和dplyr
library(dplyr)
left_join(data.frame(Id=idVector), myDF)
假设我有以下内容:
myDF <- cbind.data.frame("Id" = rep(1:5, each = 4), values = c(rnorm(4,0,1), rnorm(4, 10, 1), rnorm(4, 20,1 ), rnorm(4, 30,1), rnorm(4, 40,1)))
idVector <- sample(1:5, size = 5, replace = TRUE)
如果我的 `idVector = 4,4,3,2,1',我想拉取 ID 为 4 的所有行,然后再次拉取 Id 4,然后是 3,然后是 2,然后是 1。
我可以使用以下方法来完成:
do.call("rbind", lapply(idVector, function(x, currentDF){
currentDF[currentDF$Id == x,]}
, myDF))
是否有使用 dplyr 或 plyr 的更简洁的方法?
和dplyr
library(dplyr)
left_join(data.frame(Id=idVector), myDF)