I have the following dummy dataset of 1000 observations:
obs <- 1000
df <- data.frame(
  a=c(1,0,0,0,0,1,0,0,0,0),
  b=c(0,1,0,0,0,0,1,0,0,0),
  c=c(0,0,1,0,0,0,0,1,0,0),
  d=c(0,0,0,1,0,0,0,0,1,0),
  e=c(0,0,0,0,1,0,0,0,0,1),
  f=c(10,2,4,5,2,2,1,2,1,4),
  g=sample(c("yes", "no"), obs, replace = TRUE),
  h=sample(letters[1:15], obs, replace = TRUE),
  i=sample(c("VF","FD", "VD"), obs, replace = TRUE),
  j=sample(1:10, obs, replace = TRUE)
)
One key feature of this dataset is that the variables a to e's values are only one 1 and the rest are 0. We are sure the only one of these five columns have a 1 as value.
I found a way to extract these rows given a condition (with a 1) and assign to their respective variables:
df.a <- df[df[,"a"] == 1,,drop=FALSE]
df.b <- df[df[,"b"] == 1,,drop=FALSE]
df.c <- df[df[,"c"] == 1,,drop=FALSE]
df.d <- df[df[,"d"] == 1,,drop=FALSE]
df.e <- df[df[,"e"] == 1,,drop=FALSE]
My dilemma now is to limit the rows saved into df.a to df.e and to merge them afterwards.
 
    