簡體   English   中英

基於R中條件的子集數據

[英]Subset data based on conditions in 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) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM