Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Filtering data in R, in a for loop

I have a dataframe (d_activity) with 15 variables, each variable spans over multiple rows. What I want to do is filter the data if they have a specific Id. These Id’s are stored in the a different dataframe called active_people. So I could do this:

activity_in_use <-filter(d_activity, Id == as.character(active_people[1]))

However active_people has 21 Id numbers so I would have to add or statments I think:

activity_in_use <-filter(d_activity, Id == as.character(active_people[1])|Id == as.character(active_people[2])|Id == as.character(active_people[3])|Id == as.character(active_people[4])|Id == as.character(active_people[5])|Id == as.character(active_people[6])|Id == as.character(active_people[7])|Id == as.character(active_people[8])|Id == as.character(active_people[9])|Id == as.character(active_people[10])|Id == as.character(active_people[11])|Id == as.character(active_people[12])|Id == as.character(active_people[13])|Id == as.character(active_people[14])|Id == as.character(active_people[15])|Id == as.character(active_people[16])|Id == as.character(active_people[17])|Id == as.character(active_people[18])|Id == as.character(active_people[19])|Id == as.character(active_people[20])|Id == as.character(active_people[21]))

My question is, is it possible to, instead of typing 21 different or statements, put this in a loop? Or is there a different way? Something like this:

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

for (i in 1:length(active_people))
{
activity_in_use <-filter(d_activity, Id == as.character(active_people[i]))
}

However, this keeps overwriting itself, so I end up only with the data of the last ID from the active_people list.

Thank you very much!
Douwe

>Solution :

Use %in% instead of ==, thus we can remove the | along with multiple statements

dplyr::filter(d_activity, Id %in% active_people)
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading