基于 R 中条件的子集数据

拉胡尔·库马尔·维吉

我有多个输入,如:

a <- x  y  z
     1  2  2
     2  3  2
     3  2  4
     4  2  4
     5  2  1

b <- c(1,2)
c <- c(2,3)

我想根据 a$x 包含大于等于 b[i] 且小于等于 c[i] 的值的条件对这些数据进行子集化

输出应如下所示:

d <- x  y  z
     1  2  2
     2  3  2
     2  3  2
     3  2  4

我试过这个:

d = as.data.frame(matrix(ncol=3, nrow=0))
names(d) = names(a)
for (i in 1:length(b){
d <- rbind(d,a[which(a$x>=b[i] &                                        a$x<=c[i]),])
}
亚当·奎克

使用dplyr::filter功能:

sub_list <- lapply(1:length(b), function(i) a %>% filter(x >= b[i] & x <= c[i]))
do.call(rbind, sub_list)

  x y z
1 1 2 2
2 2 3 2
3 2 3 2
4 3 2 4

输入数据:

a <- structure(list(x = 1:5, y = c(2L, 3L, 2L, 2L, 2L), z = c(2L, 
2L, 4L, 4L, 1L)), .Names = c("x", "y", "z"), class = "data.frame", row.names = c(NA, 
-5L))

b <- c(1,2)
c <- c(2,3) 

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章