-1

"I have 150 rows and 7 columns, i have to subset the female data using for loop and if statement in R, i have tried followig code am getting only one row. please help him out."

da_M<-data.frame()
da_F<-data.frame()

for (i in 1:nrow(da)){
  if (da$Gender[i]=="Female")
    da_F=da[i,]
  else
    da_M=da[i,]
}
Tensibai
  • 15,557
  • 1
  • 37
  • 57

2 Answers2

0

Using vectorization, which is a lot faster than a for-loop:

da_F <- da[which(da$Gender=="Female"),]
da_M <- da[which(da$Gender!="Female"),]
Phann
  • 1,283
  • 16
  • 25
0
## Sample data I created for convenience

da <- data.frame(Gender = c("male","Female","male","Female"), val = c(1,2,3,4))
da_M<-data.frame()
da_F<-data.frame()

## Your way

for (i in 1:nrow(da)){

  if (da$Gender[i]=="Female")

    da_F <- rbind(da_F, da[i, ])
  else

    da_M <- rbind(da_M, da[i, ])
}

## Alternative Way

da_M <- da[da$Gender == "male", ]
da_F <- da[da$Gender == "Female", ]
Zico
  • 185
  • 12