Home > database >  How to rearrange the rows of a matrix in R
How to rearrange the rows of a matrix in R

Time:06-21

I have the following data frame:

> agg_2
# A tibble: 3 × 3
  bcs        default_flag pred_default
  <chr>             <dbl>        <dbl>
1 high-score      0.00907       0.0121
2 low-score       0.0345        0.0353
3 mid-score       0.0210        0.0204

I plot it as a bar plot using the following code:

barplot(t(as.matrix(agg_2[,-1])),
        main = "Actual Default vs Predicted Default",
        xlab = "Score Category",
        ylab = "Default Rate",
        names.arg = c("High Score", "Low Score", "Mid Score"),
        col = gray.colors(2),
        beside = TRUE)
legend("topleft",
       c("Default", "Pred. Default"),
       fill = gray.colors(2))

and it gives me this:

Bar plot

How can I rearrange the data frame/matrix so that the pairs of bars in the bar plot are as follows: Low Score then Mid Score then High Score?

CodePudding user response:

Here is one potential solution:

agg_2 <- read.table(text = "bcs        default_flag pred_default
high-score      0.00907       0.0121
low-score       0.0345        0.0353
mid-score       0.0210        0.0204", header = TRUE)

agg_2$bcs <- factor(agg_2$bcs, levels = c("low-score", "mid-score", "high-score"), ordered = TRUE)
agg_2 <- agg_2[order(agg_2$bcs),]

barplot(t(as.matrix(agg_2[,-1])),
        main = "Actual Default vs Predicted Default",
        xlab = "Score Category",
        ylab = "Default Rate",
        names.arg = agg_2$bcs,
        col = gray.colors(2),
        beside = TRUE)
legend("topright",
       c("Default", "Pred. Default"),
       fill = gray.colors(2))

Created on 2022-06-21 by the reprex package (v2.0.1)

  • Related