ベクトルやリストを並び替えるときはsort()関数を使いますが
行列(マトリクス)やデータフレームを、特定の列をキーにして
並び替える場合はorder()という関数を使います。
同じジュースが、250ml・100円、350ml・120円、180ml・80円で
売られています。
1円あたりの容量が多いのはどれか、調べてみたいと思います。
まず、データを行列に入れます。
> juice <- matrix(c(250, 350, 180, 100, 120, 80), nrow=3)
> colnames(juice) <- c("volume", "price")
> juice
_____volume_price
[1,]____250___100
[2,]____350___120
[3,]____180____80
容量を価格で割った値を3列目に追加し、その列でソートします。
> juice <- cbind(juice, rate=juice[,1]/juice[,2])
> juice[order(juice[,3]),]
_____volume_price_____rate
[1,]____180____80 2.250000
[2,]____250___100 2.500000
[3,]____350___120 2.916667
僅差ですが、350mlが一番お得なようです。
なお、降順にソートしたい場合はorderのオプションに
「decreasing=TRUE」をつければOKです。