I am trying to use a for loop to iterate through every row in a dataframe and I am using an if else loop to change values in my dataframe if other values in the row meet certain criteria.
When I run the code I get the error message of
Error in if ((RouteType == 7 | RouteType == 9) & (SGR > 5) & (0 < SGR30) & : missing value where TRUE/FALSE needed
I have the correct inputs for my data.
Here is my code:
library(MASS)
library(plyr)
library(dplyr)
library(tidyverse)
k=#The MAin Loop will be on all the sample FHWA data
for (k in 1:NROW(DataWSGR)){
RouteType <- DataWSGR[k,4]
FactoredAADT <- DataWSGR[k,11]
SGR <- DataWSGR[k,17]
SGR10 <- DataWSGR[k,18]
SGR20 <- DataWSGR[k,19]
SGR30 <- DataWSGR[k,20]
Count10 <- DataWSGR[k,21]
Count20 <- DataWSGR[k,22]
Count30 <- DataWSGR[k,23]
Recommended <- DataWSGR[k,24]
# 30 year 0 < SGR <= 5
if((RouteType == 7 | RouteType == 9) & (SGR > 5 ) & (0 < SGR30) & (SGR30 <= 5 ))
{DataWSGR[k,24] <- ((SGR30*3/10*Count30) + Count30)} else
# 20 year 0 < SGR <= 5
if((RouteType == 7 | RouteType == 9) & (SGR > 5 ) & (0 < SGR20) & (SGR20 <= 5 ))
{DataWSGR[k,24] <- ((SGR20*2/10*Count20) + Count20)} else
# 10 Year 0 < SGR < 5
if((RouteType == 7 | RouteType == 9) & (SGR > 5 ) & (0 < SGR10) & (SGR10 <= 5 ))
{DataWSGR[k,24] <- ((SGR10*1/10*Count10) + Count10)} else
# 10, 20, and 30 year SGR > 5
if((RouteType == 7 | RouteType == 9) & (SGR > 5 ) &
(SGR30 > 5 | !is.na(SGR30)) & (SGR20 > 5 | !is.na(SGR20)) & (SGR10 > 5 | !is.na(SGR10)) )
{DataWSGR[k,24] <- ((2/10*FactoredAADT*5) + FactoredAADT)} else
# 10, 20, and 30 year SGR < 0
if((RouteType == 7 | RouteType == 9) & (SGR > 5 ) &
(SGR30 < 0 | !is.na(SGR30)) & (SGR20 < 0 | !is.na(SGR20)) & (SGR10 < 0 | !is.na(SGR10)) )
{DataWSGR[k,24] <- ((2/10*FactoredAADT*1) + FactoredAADT)} else
{next}
}```