Subset a data frame using multiple conditions without overriding

I have a very large data frame composed of strings and numeric values. I am trying to create a smaller data frame based on certain conditions. My current code works fine, although when try to add to my data frame, named NMassBalance, my new line of code overwrites the previous lines. Is there a way to list all stations after the Station == portion or some other way to avoid overwriting?

Current Code:
NMassBalance <- subset(MassBalance, Station == "C3A" , select = c("Station","Month","Year","DissAmmonia","DissNitrateNitrite","TN","SAC","YOLO","CSMR","MOKE","MISC","SJR","RIO","WEST","CCC","SWP","CVP"))

NMassBalance <- subset(MassBalance, Station == "MD10A" , select = c("Station","Month","Year","DissAmmonia","DissNitrateNitrite","TN","SAC","YOLO","CSMR","MOKE","MISC","SJR","RIO","WEST","CCC","SWP","CVP"))

NMassBalance <- subset(MassBalance, Station == "C10A" , select = c("Station","Month","Year","DissAmmonia","DissNitrateNitrite","TN","SAC","YOLO","CSMR","MOKE","MISC","SJR","RIO","WEST","CCC","SWP","CVP"))

NMassBalance <- subset(MassBalance, Station == "D28A" , select = c("Station","Month","Year","DissAmmonia","DissNitrateNitrite","TN","SAC","YOLO","CSMR","MOKE","MISC","SJR","RIO","WEST","CCC","SWP","CVP"))

Hello Micaela,

This is very normal expected behaviour in R. If you write multiple references back to NMassBalance <- as such R will change what NMassBalance is referencing.

In terms of your code, the best way to list all the stations you want to include will look something like this:

NMassBalance <- subset(MassBalance, 
Station == "C3A" |  Station == "MD10A" | Station == "C10A"  | Station == "D28A",
select = c("Station","Month","Year","DissAmmonia","DissNitrateNitrite","TN","SAC","YOLO","CSMR","MOKE","MISC","SJR","RIO","WEST","CCC","SWP","CVP"))

I would suggest using filter from dplyr from the tidyverse as it is far easier to write:

NMassBalance <-  MassBalance %>% filter(Station == "C3A" |  Station == "MD10A" | Station == "C10A"  | Station == "D28A" )  %>% select(Station,Month,Year,DissAmmonia,DissNitrateNitrite,TN,SAC,YOLO,CSMR,MOKE,MISC,SJR,RIO,WEST,CCC,SWP,CVP)

Thank you! I'm pretty new to R, so I really appreciate the help!

1 Like

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.