This is a pretty common operation, so there is actually a function that does it for you:
test <- data.frame(Score = runif(10, -1, 1)) ## sample data
test$val <- cut(test$Score,
breaks = c(-1, 0, 0.5, 1),
labels = c("critical","poor","good"))
Which is doing the same thing as @bloosmore, but also has methods for different types of variables.