[R] A question of data frame filter based on another one
Rui Barradas
ru|pb@rr@d@@ @end|ng |rom @@po@pt
Fri Feb 18 21:30:22 CET 2022
Hello,
Use ?rowSums and compare its result to 0. You want the sums greater than
zero.
x <- "
id g
1 1 21
2 3 52
3 2 43
4 4 94
5 5 35"
y <- "
id g
1 1 1
2 0 0
3 0 1
4 1 0
5 1 0"
x <- read.table(textConnection(x), header = TRUE)
y <- read.table(textConnection(y), header = TRUE)
x[rowSums(x) > 0L, ]
# id g
#1 1 21
#2 3 52
#3 2 43
#4 4 94
#5 5 35
Hope this helps,
Rui Barradas
Às 18:32 de 18/02/2022, Li, Aiguo (NIH/NCI) [E] via R-help escreveu:
> I have tow dataframes as below:
>> x
> id g
> 1 1 21
> 2 3 52
> 3 2 43
> 4 4 94
> 5 5 35
>
>> y
> id g
> 1 1 1
> 2 0 0
> 3 0 1
> 4 1 0
> 5 1 0
>
> Results dataframe I want is:
> 1 21
> 2 43
> 4 94
> 5 35
>
> Basically I want to extract all the values in x which corresponding those values =1 in y.
>
> I tried:
> x[which(y==1),]. It gets:
> id g
> 1 1 21
> 4 4 94
> 5 5 35
> NA NA NA
> NA.1 NA NA
>
> But missing the row: 2 43.
>
> Any help will be appreciated.
>
> Thanks,
> Aiguo
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> 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