Loop over columns of dataframe and change values condtionally
Hi you could operate with whole data frame (sometimes) head(iris) Sepal.Length Sepal.Width Petal.Length Petal.Width Species 1 5.1 3.5 1.4 0.2 setosa 2 4.9 3.0 1.4 0.2 setosa 3 4.7 3.2 1.3 0.2 setosa 4 4.6 3.1 1.5 0.2 setosa 5 5.0 3.6 1.4 0.2 setosa 6 5.4 3.9 1.7 0.4 setosa chenge all
head(iris[,1:4]+10)
Sepal.Length Sepal.Width Petal.Length Petal.Width 1 15.1 13.5 11.4 10.2 2 14.9 13.0 11.4 10.2 3 14.7 13.2 11.3 10.2 4 14.6 13.1 11.5 10.2 5 15.0 13.6 11.4 10.2 6 15.4 13.9 11.7 10.4 change only some
iris[,1:4][iris[,1:4]<2] <- iris[,1:4][iris[,1:4]<2]+10 head(iris)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species 1 5.1 3.5 11.4 10.2 setosa 2 4.9 3.0 11.4 10.2 setosa 3 4.7 3.2 11.3 10.2 setosa 4 4.6 3.1 11.5 10.2 setosa 5 5.0 3.6 11.4 10.2 setosa 6 5.4 3.9 11.7 10.4 setosa Cheers Petr
-----Original Message-----
From: R-help <r-help-bounces at r-project.org> On Behalf Of Luigi Marongiu
Sent: Thursday, September 2, 2021 3:35 PM
To: r-help <r-help at r-project.org>
Subject: [R] Loop over columns of dataframe and change values condtionally
Hello,
it is possible to select the columns of a dataframe in sequence with:
```
for(i in 1:ncol(df)) {
df[ , i]
}
# or
for(i in 1:ncol(df)) {
df[ i]
}
```
And change all values with, for instance:
```
for(i in 1:ncol(df)) {
df[ , i] <- df[ , i] + 10
}
```
Is it possible to apply a condition? What would be the syntax?
For instance, to change all 0s in a column to NA would `df[i][df[i == 0] =
NA`
be right? Thank you -- Best regards, Luigi
______________________________________________ R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting- guide.html and provide commented, minimal, self-contained, reproducible code.