0

R に、4 つの数値を含むリスト型の列を持つデータ フレームがあります。

          Size
Ford   1,2,3,4
Gm     2,3,5,6
Nissan 2,3,4,5
Toyota 1,2,2,4

ここで車の名前 (Ford など) は行の名前で、Size ("1,2,3,4" など) はリストの列です。

このデータ フレームを列のサイズの 3 番目の数値で並べ替えて、次の結果を得たいと思います。

          Size
Toyota 1,2,2,4
Ford   1,2,3,4
Nissan 2,3,4,5
Gm     2,3,5,6

完全な例では、各行に多くの列がありますが、サイズ列の 3 番目の値で並べ替えたいと考えています。

4

1 に答える 1

4

以下のようなものが機能します-最初にデータを作り直します:

dat <- data.frame(
  ID=1:4,
  Size=I(list(1:4,c(2,3,5,6),2:5,c(1,2,2,4))),
  row.names=c("Ford","Gm","Nissan","Toyota")
)

次のようになります。

       ID       Size
Ford    1 1, 2, 3, 4
Gm      2 2, 3, 5, 6
Nissan  3 2, 3, 4, 5
Toyota  4 1, 2, 2, 4

次に注文します。

dat[order(sapply(dat$Size,"[",3)),]

       ID       Size
Toyota  4 1, 2, 2, 4
Ford    1 1, 2, 3, 4
Nissan  3 2, 3, 4, 5
Gm      2 2, 3, 5, 6
于 2013-09-22T23:28:26.560 に答える