首页 > 解决方案 > 根据外部列表对数据列表进行排序

问题描述

我有一个包含 81 个对象和 12 个变量的数据框,包括每个对象的 ID。此外,我有一个排序的(!)ID 列表。

现在,我想在这个特定列表之后对我的数据框进行排序。

任何人都可以为这种情况做一个简单的例子吗?

我是新手,正在努力学习。

提前致谢!

我的案例的快速示例:

                         ID     City     NR1       NR2
         Dataframe1 = "11000", Berlin, (123,2), (532,1)
                      "02401", Hamburg, (435,2), (352,1)
                      "83329", München, (124,3), (125,2)
        

         ID = list("02401", "83329", "11000")

现在,我希望 Dataframe1 在列表中的 ID 之后排序。

标签: rsortingweb-scraping

解决方案


您可以使用arrange().

一个例子: iris 数据集,如下所示:

> head(iris)
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa
creating an external vector:

index<-sample(1:150)

然后,您可以使用该外部向量对数据框进行排序:

head(arrange(iris, index))

  Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
1          6.4         2.7          5.3         1.9  virginica
2          5.5         3.5          1.3         0.2     setosa
3          6.3         3.3          6.0         2.5  virginica
4          6.3         3.3          4.7         1.6 versicolor
5          4.9         2.5          4.5         1.7  virginica
6          5.7         2.8          4.5         1.3 versicolor

要按与变量之一匹配的特定外部向量进行排列,您可以使用match()

iris2<-head(iris)%>%mutate(ID=sample(1:150, 6))

> iris2
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species ID
1          5.1         3.5          1.4         0.2  setosa 29
2          4.9         3.0          1.4         0.2  setosa 61
3          4.7         3.2          1.3         0.2  setosa 69
4          4.6         3.1          1.5         0.2  setosa 89
5          5.0         3.6          1.4         0.2  setosa 59
6          5.4         3.9          1.7         0.4  setosa 84
external_vector<-c(69,59,84,29,61,89)

安排match()

iris2[match(external_vector, iris2$ID),]

  Sepal.Length Sepal.Width Petal.Length Petal.Width Species ID
3          4.7         3.2          1.3         0.2  setosa 69
5          5.0         3.6          1.4         0.2  setosa 59
6          5.4         3.9          1.7         0.4  setosa 84
1          5.1         3.5          1.4         0.2  setosa 29
2          4.9         3.0          1.4         0.2  setosa 61
4          4.6         3.1          1.5         0.2  setosa 89

推荐阅读