如何在r中排列行


通常,您可能希望按特定顺序排列 R 中数据帧的行。幸运的是,使用dplyr库中的range()函数可以很容易地做到这一点。

本教程使用以下数据框解释了该函数实际使用的几个示例:

 #create data frame
df <- data.frame(player = c('A', 'B', 'C', 'D', 'E', 'F', 'G'),
                 points = c(12, 14, 14, 15, 20, 18, 29),
                 assists = c(3, 5, 7, 8, 14, NA, 9))

#view data frame 
df

  player points assists
1 to 12 3
2 B 14 5
3 C 14 7
4 D 15 8
5 E 20 14
6 F 18 NA
7 G 29 9

示例 1:按列组织

下面的代码展示了如何根据“points”列中的值按升序排列数据框:

 library(dplyr)

df %>% arrange(points)

  player points assists
1 to 12 3
2 B 14 5
3 C 14 7
4 D 15 8
5 F 18 NA
6 E 20 14
7 G 29 9

要按降序排序,可以使用desc()函数:

 df %>% arrange( desc (dots))

  player points assists
1 G 29 9
2 E 20 14
3 F 18 NA
4 D 15 8
5 B 14 5
6 C 14 5
7 to 12 3

请注意,无论您按升序还是降序排序,NA 都将排序到末尾:

 df %>% arrange(assists)

  player points assists
1 to 12 3
2 B 14 5
3 C 14 7
4 D 15 8
5 G 29 9
6 E 20 14
7 F 18 NA

df %>% arrange( desc (assists))

  player points assists
1 E 20 14
2 G 29 9
3 D 15 8
4 C 14 7
5 B 14 5
6 to 12 3
7 F 18 NA

示例 2:跨多列排列

要跨多列排列行,我们可以简单地提供更多列名称作为参数:

 #sort by points, then assists
df %>% arrange(points, assists)

  player points assists
1 to 12 3
2 B 14 5
3 C 14 7
4 D 15 8
5 F 18 NA
6 E 20 14
7 G 29 9

我们还可以按升序列和降序列来组织行:

 #sort by points ascending, then assists descending
df %>% arrange(points, desc (assists))

  player points assists
1 to 12 3
2 C 14 7
3 B 14 5
4 D 15 8
5 F 18 NA
6 E 20 14
7 G 29 9

示例 3:按自定义顺序排列行

有时您可能还想按自定义顺序对行进行排序。您可以使用具有特定级别的因子轻松地做到这一点:

 #sort by player with custom order
df %>% arrange( factor (player, levels = c('D', 'C', 'A', 'B', 'E', 'F', 'G')))

  player points assists
1 D 15 8
2 C 14 7
3 to 12 3
4 B 14 5
5 E 20 14
6 F 18 NA
7 G 29 9

您可以在此处找到排列()函数的完整文档。

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注