Skip to content
Prev 389017 / 398506 Next

Loop over columns of dataframe and change values condtionally

Hello,

In the particular case you have, to change to NA based on condition, use 
`is.na<-`.

Here is some test data, 3 times the same df.


set.seed(2021)
df3 <- df2 <- df1 <- data.frame(
   x = c(0, 0, 1, 2, 3),
   y = c(1, 2, 3, 0, 0),
   z = rbinom(5, 1, prob = c(0.25, 0.75)),
   a = letters[1:5]
)


# change all columns
is.na(df1) <- df1 == 0
df1

# only one column
is.na(df2[, 2]) <- df2[, 2] == 0
df2

# change several columns given by an index
is.na(df3[c(1, 3)]) <- df3[c(1, 3)] == 0
df3


Hope this helps,

Rui Barradas


?s 14:35 de 02/09/21, Luigi Marongiu escreveu: