0

我在 R 中有一个数据框,其中有一列包含四个数字的列表类型:

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

这里汽车名称(福特等)是行名,尺寸(“1,2,3,4”等)是一列列表。

我想按 Size 列中的第三个数字对该数据框进行排序,因此我们得到以下结果:

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

在一个完整的示例中,我在每一行中有很多列,但我仍然想按 Size 列中的第三个值进行排序。

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 回答