[R] how to filter variables which appear in any row but do not include
Rui Barradas
ru|pb@rr@d@@ @end|ng |rom @@po@pt
Wed Jun 3 18:50:19 CEST 2020
Hello,
If you want to filter out rows with any of the values in a 'unwanted'
vector, try the following.
First, create a test data set.
x <- scan(what = character(), text = '
"E10" "E103" "E104" "E109" "E101" "E108" "E105" "E100" "E106" "E102"
"E107" "E11" "E119" "E113" "E115" "E111" "E114" "E110" "E118" "E116" "E112"
"E117"
')
set.seed(2020)
dat <- replicate(5, sample(x, 20, TRUE))
dat <- as.data.frame(dat)
Now, remove all rows that have at least one of "E102" or "E112"
unwanted <- c("E102", "E112")
no <- sapply(dat, function(x){
grepl(paste(unwanted, collapse = "|"), x)
})
no <- apply(no, 1, any)
dat[!no, ]
That's it, if I understood the problem.
Hope this helps,
Rui Barradas
Às 15:55 de 03/06/20, Ana Marija escreveu:
> Hello.
>
> I am trying to filter only rows that have ANY of these variables:
> E109, E119, E149
>
> so I did:
> controls=t %>% filter_all(any_vars(. %in% c("E109", "E119","E149")))
>
> than I checked what I got:
>> s0 <- sapply(controls, function(x) grep('^E10', x, value = TRUE))
>> d0=unlist(s0)
>> d10=unique(d0)
>> d10
> [1] "E10" "E103" "E104" "E109" "E101" "E108" "E105" "E100" "E106" "E102"
> [11] "E107"
> s1 <- sapply(controls, function(x) grep('^E11', x, value = TRUE))
> d1=unlist(s1)
> d11=unique(d1)
>> d11
> [1] "E11" "E119" "E113" "E115" "E111" "E114" "E110" "E118" "E116" "E112"
> [11] "E117"
>
> I need help with changing this command
> controls=t %>% filter_all(any_vars(. %in% c("E109", "E119","E149")))
>
> so that in the output I do not have any rows that include E102 or E112?
>
> Thanks
> Ana
>
> ______________________________________________
> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>
More information about the R-help
mailing list