r - Select one non NA from multiple rows -
surprised hasn't been asked before (as far can see)
i have data.frame multiple columns , 2 rows, such below.
df<-as.data.frame(rbind(row1=c(na,na,rep(0,2),"foo",na,"bar","foo","foobar","etc"), row2=c(300,23.4,1,2,"bar","foo","bar","hello","world","etc"))) i want select entry in first row default if it's not na. if na want entry in second row. i've tried following:
apply(df,2,function(x) ifelse(is.na(x[1]),x[2],x[1])) however, x combination of numeric , character , each columns class needs maintained apply causing issues. need returned data frame , not named vector.
try , see if after.
df<-as.data.frame(rbind(row1=c(na,na,rep(0,2),"foo",na,"bar","foo","foobar","etc"), row2=c(300,23.4,1,2,"bar","foo","bar","hello","world","etc"))) outdf <- lapply(df, function(x){ if(is.na(x[[1]])&!is.na(x[[2]])){ x[[1]] <- x[[2]] } x }) data.frame(outdf, stringsasfactors = false)
Comments
Post a Comment