hyeonny
hyeonny

Reputation: 1

How to sort table by column in R?

I use R package nycflights13 and made a table in this way.

rk <- rank(-tab.0); rk 
carrier.top10 <- names(tab.0)[rk<=10]
flights.1 <- subset(flights, carrier %in% carrier.top10)
flights.1$badflight <- as.factor(flights.1$dep_delay >= 60)
levels(flights.1$badflight) <- c("good", "bad")
tab.2 <- with(flights.1, table(carrier, badflight))
tab.2m <- addmargins(tab.2)
2*prop.table(tab.2m, 1)

    badflight
carrier       good        bad        Sum
    9E  0.88567983 0.11432017 1.00000000
    AA  0.93662169 0.06337831 1.00000000
    B6  0.91406524 0.08593476 1.00000000
    DL  0.94348946 0.05651054 1.00000000
    EV  0.86400810 0.13599190 1.00000000
    MQ  0.91904781 0.08095219 1.00000000
    UA  0.93275151 0.06724849 1.00000000
    US  0.96080109 0.03919891 1.00000000
    VX  0.92886377 0.07113623 1.00000000
    WN  0.91028718 0.08971282 1.00000000
    Sum 0.91787917 0.08212083 1.00000000

Now, I wanna sort this file with decreasing order in "good" part. What can I do?

Upvotes: 0

Views: 1299

Answers (2)

Ronak Shah
Ronak Shah

Reputation: 389325

When you do prop.table you do not get a normal data.frame or matrix. You need to convert it into one and then use order. Try

data <- 2*prop.table(tab.2m, 1)
temp <- as.data.frame.matrix(data)
temp[order(temp$good, decreasing = TRUE), ]

Tried it on this example using mtcars

data <- prop.table(with(mtcars, table(cyl, am)), 1)
temp <- as.data.frame.matrix(data)
temp[order(temp$`0`, decreasing = TRUE), ]

#          0         1
#8 0.8571429 0.1428571
#6 0.5714286 0.4285714
#4 0.2727273 0.7272727

Upvotes: 1

Hart Radev
Hart Radev

Reputation: 360

Sorting by column is usually done by using order/sort:

mtcars[order(mtcars$mpg), ]

Upvotes: 0

Related Questions