Katy Torres
Katy Torres

Reputation: 137

R: Applying a function to every entry in dataframe

I want to make every element in the dataframe (except fot the ID column) become a 0 if it is any number other than 1.

I have:

ID  A B C D E
abc 5 3 1 4 1
def 4 1 3 2 5

I want:

ID  A B C D E
abc 0 0 1 0 1
def 0 1 0 0 0

I am having trouble figuring out how to specify for this to be done to do to every entry in every column and row.

Here is my code:

apply(dat.lec, 2 , function(y) 
  if(!is.na(y)){
      if(y==1){y <- 1}
      else{y <-0} 
     }
  else {y<- NA}
)

Thank you for your help!

Upvotes: 0

Views: 115

Answers (1)

Maurits Evers
Maurits Evers

Reputation: 50728

No need for implicit or explicit looping.

# Sample data
set.seed(2016);
df <- as.data.frame(matrix(sample(10, replace = TRUE), nrow = 2));
df <- cbind.data.frame(id = sample(letters, 2), df);
df;
#  id V1 V2 V3 V4 V5
#1  k  2  9  5  7  1
#2  g  2  2  2  9  1    

# Replace all entries != 1 with 0's
df[, -1][df[, -1] != 1] <- 0;
df;
#  id V1 V2 V3 V4 V5
#1  k  0  0  0  0  1
#2  g  0  0  0  0  1

Upvotes: 2

Related Questions