lundi 22 juillet 2019

R - How select i-th element if a condition occurs with for loop

In R, I have a dataframe (df) like this:

Rif   dd    A   A   A   A   A   B   B   B   B   B   C   C   C   C   C
a1    10    5   8   10  2   6   9   6   5   7   9   1   5   6   4   5
b1    20    12  7   1   5   9   10  5   3   8   7   3   6   1   9   8
c1    100   11  6   8   1   14  1   11  9   3   6   10  8   13  8   4
d1    70    4   3   7   8   11  19  2   6   7   1   20  18  7   10  7

I have a vector rif <- c(0, 15, 50, 90, 110)

I would like to add to the df a column such that if dd(i) >= rif(i-1) & dd(i)

Rif   dd    A   A   A   A   A   B   B   B   B   B   C   C   C   C   C  V1
a1    10    5   8   10  2   6   9   6   5   7   9   1   5   6   4   5  8 
b1    20    12  7   1   5   9   10  5   3   8   7   3   6   1   9   8  1
c1    100   1   6   8   1   14  1   11  9   3   6   10  8   13  8   4  14
d1    70    4   3   7   8   11  19  2   6   7   1   20  18  7   10  7  8

The same should be done for V2 and V3 with respect to Bs and Cs columns.

ref <- c(0, 15, 50, 90, 110)

for (i in 1:length(ref)) {
  for (j in 1:nrow(df)) {
    if (df$dd >= ref[i-1] && df$dd< ref[i]) {
      df[,"V1"] <- df[j,i]
    } 
  }
}

I get the following error: Error in if (..) : missing value where TRUE/FALSE needed

Probably the if command is not the correct one.

Aucun commentaire:

Enregistrer un commentaire