如何在 dplyr 中使用 ntile() 函数(带示例)


您可以使用 R 中dplyr包中的ntile()函数将输入向量划分为n 个容器。

该函数使用以下基本语法:

ntile(x, n)

金子:

  • x :输入向量
  • n : 隔室数量

注意:铲斗尺寸最多可能相差一倍。

以下示例展示了如何在实践中使用此功能。

示例 1:将 ntile() 与向量一起使用

以下代码演示了如何使用ntile()函数将包含 11 个元素的向量划分为 5 个不同的桶:

 library (dplyr)

#createvector
x <- c(1, 3, 4, 6, 7, 8, 10, 13, 19, 22, 23)

#break up vector into 5 buckets
ntile(x, 5)

 [1] 1 1 1 2 2 3 3 4 4 5 5

从结果中我们可以看到原始向量的每个元素都被放置在五个桶之一中。

最小值分配给存储桶 1,最大值分配给存储桶 5。

例如:

  • 1、3、4中的最小值被分配给桶1
  • 最大值 22 和 23 被分配给存储桶5

示例 2:将 ntile() 与数据框结合使用

假设我们在 R 中有以下数据框,显示不同篮球运动员的得分:

 #create data frame
df <- data. frame (player=LETTERS[1:9],
                 points=c(12, 19, 7, 22, 24, 28, 30, 19, 15))

#view data frame
df

  player points
1 to 12
2 B 19
3 C 7
4 D 22
5 E 24
6 F 28
7 G 30
8:19 a.m.
9 I 15

以下代码演示了如何使用ntile()函数在数据框中创建一个新列,根据得分将每个玩家分配到三个存储桶之一:

 library (dplyr)

#create new column that assigns players into buckets based on points
df$bucket <- ntile(df$points, 3)

#view updated data frame
df

  player points bucket
1 to 12 1
2 B 19 2
3 C 7 1
4 D 22 2
5 E 24 3
6 F 28 3
7 G 30 3
8:19 2
9 I 15 1

新的存储桶列为每个玩家分配一个介于 1 和 3 之间的值。

得分最低的玩家获得的值为1 ,得分最高的玩家获得的值为3

其他资源

以下教程解释了如何使用 R 中的其他常用函数:

如何在 dplyr 中使用 across() 函数
如何在 dplyr 中使用 relocate() 函数
如何在 dplyr 中使用 slice() 函数

添加评论

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