R语言 使用Dplyr的窗口函数
R中的聚合函数用于获取一堆数值,并将其作为一个单一的数值给我们输出。聚合方法的一些例子是总和和平均值。R中的Windows函数为聚合方法提供了一个变化,即它们返回的输出数量相当于输入的数量,如果取了n个输入,就会返回n个输出。在这篇文章中,我们将讨论R中的各种窗口函数。
在这篇文章中,我们将涉及的函数有:
row_number | 对数值进行排序。 |
---|---|
min_rank | 计算排名,以便将该元素之前的最小排名作为输出结果抛出。 |
percent_rank | 计算排名,以便返回值0和1之间的百分比排名。 |
cume_dist | 计算所有数值中最多等于当前等级的比例。 |
Lead | 计算在向量中指定的数值序列中的下一个元素。 |
Lag | 计算在向量中指定的数值序列中的前一个元素。 |
总和法 | 计算到那个特定索引为止遇到的值的总和。 |
累加法 | 计算直到该特定索引所遇到的值的乘积。 |
累计最小法 | 计算直到该特定索引值所遇到的最小值。 |
累计最大值法 | 计算到该特定指数值为止所遇到的最大值。 |
累计平均法 | 计算到该特定指数值为止所遇到的平均值。 |
累计任何方法 | 检查向量中的任何元素是否满足结果。 |
累积所有方法 | 检查向量中的所有元素是否满足结果。 |
让我们看看每个函数的语法和代码。
Row_number
Row_number方法被认为等同于rank方法。缺少的值将保持原样。
语法: row_number(vec)
参数: vec–需要排序的数值的向量
library(dplyr)
library(data.table)
#creating a data vector
companies = c("Geekster","Geeksforgeeks","Wipro","TCS")
#printing the original vector
print(companies)
#computing the row number of the used vector
rn <- row_number(companies)
print(rn)
输出
"Geekster" "Geeksforgeeks" "Wipro" "TCS"
2 1 4 3
解释
所提供的输入向量的行号是在按递增顺序排序后计算出来的。例如,第一个索引中的单词(GeeksForGeeks)是最小的词表,因此它的行号是1。其次是单词 “Geekster”,其行号对应于2。 TCS得到的行号是3,因为它是下一个。
最小排名
min_rank方法也被用来计算等级,以使该元素之前的最小等级被抛出作为输出。
语法: min_rank(vec)
参数: vec–需要排序的数值向量
#computing the rank of the used vector
companies = c("Geekster","Geeksforgeeks",
"Geekster","Wipro","TCS")
min_rank <- min_rank(companies)
print(min_rank)
输出
2 1 2 5 4
在这里我们可以看到,Geekster的最小等级是2,所以它分配了相同的值,即不是3。
百分比排名
percent_rank方法也被用来计算等级,以便返回0和1之间的百分比等级。
语法: percent_rank(vec)
参数: vec–需要排序的值的向量
#computing the rank of the used vector
percent_rank <- percent_rank(companies)
print(percent_rank)
输出
0.25 0.00 0.25 1.00 0.75
这些值在按升序排序后从0.0的百分比开始。
Cume_dist
R中的cume_dist方法相当于一个累积分布函数。它被用来计算所有数值中最多等于当前等级的比例。
语法: cume_dist(vec)
参数: vec–需要排序的值的向量
#computing the cume_dist of the used vector
dist <- cume_dist(companies)
print(dist)
输出
0.6 0.2 0.6 1.0 0.8
lead
R中的lead窗口方法默认用于计算向量中指定的数值序列中的下一个元素。领先值不适用于输入数据对象的最后一个元素。
语法: lead(vec)
参数: vec–需要排序的数值的向量。
#creating a vector
vec <- c(4,3,1,2,5)
print(vec)
lead <- lead(vec)
print(lead)
输出
4 3 1 2 5
3 1 2 5 NA
lag
R中的滞后窗口方法默认用于计算向量中指定的数值序列中的前一个元素。滞后值不适用于输入数据对象的第一个元素,因为它之前没有任何元素。
语法: lag(vec)
参数: vec-需要排序的数值的向量
lag <- lag(vec)
print(lag)
输出
NA 4 3 1 2
解释:
第一个元素的滞后方法是不适用的。对于第一个指数的元素,即3,滞后值相当于第0个指数的值。
cumsum
cumsum()方法用于计算直到该特定索引所遇到的值的总和。第一个元素的cumsum值等同于该值本身。
语法: cumsum(vec)
参数: vec-需要排序的值的向量
#creating a vector
vec <- 1:5
cumsum <- cumsum(vec)
print(cumsum)
输出
1 3 6 10 15
解释:
矢量中第一个索引元素2的和是1+2=3。对于矢量中索引2的元素3,总和=1+2+3=6,同样可以计算累积总和。
Cum Prod方法
cumprod()方法用于计算直到该特定索引所遇到的数值的乘积。第一个元素的cumprod值等同于该值本身。
语法: cumprod(vec)
参数: vec-值的向量
cumprod <- cumprod(vec)
print(cumprod)
输出
1 2 6 24 120
解释:
第0个索引元素的乘积是数值本身,相当于1.矢量中第一个索引元素2的乘积是122=3。对于矢量中索引2的元素3,积=123=6。同样可以计算累积积。
累计最小法
cummin()方法用于计算在该特定索引值之前遇到的最小值。
语法: cummin(vec)
参数: vec–数值的向量
#creating a vector
vec <- c(3,2,1,5,3)
cum_min <- cummin(vec)
print(cum_min)
输出
3 2 1 1 1
解释:
直到第一个元素遇到的最小值是元素本身的值。在第二个元素2中,最小值变为2。对于第三个元素,最小值变为1。第四个元素大于最小值,因此,最小值保持不变。
累积最大值方法
cummax()方法用于计算直到该特定索引值所遇到的最大值。
语法: cummax(vec)
参数: vec–数值的向量
cum_max <- cummax(vec)
print(cum_max)
输出
3 3 3 5 5
累积平均法
cummean()方法用于计算在该特定索引值之前遇到的平均值。
语法: cummean(vec)
参数: vec–数值的向量
cum_mean <- cummean(vec)
print(cum_mean)
输出
3.00 2.50 2.00 2.75 2.80
累积任意法
Cumany方法用于检查向量中的任何元素是否满足结果。在考虑函数值时,向量中任何特定索引的元素都被考虑在内。
语法: cumany(vec)
参数: vec-值的向量
cum_any_3 <- cumany(vec>3)
print("Any vector values greater than 3")
print(cum_any_3)
cum_any_0 <- cumany(vec==0)
print("Any vector values equal to 0")
print(cum_any_0)
输出
"Any vector values greater than 3"
FALSE FALSE FALSE TRUE TRUE
"Any vector values equal to 0"
FALSE FALSE FALSE FALSE FALSE
累积所有方法
cumall方法用于检查向量中的所有元素是否满足结果。在考虑函数值时,向量中任何特定索引的元素都被考虑在内。
语法: Cumall(vec)
参数: vec-值的向量
#using cumall method
cum_any_3 <- cumall(vec>3)
print(cum_any_3)
输出
FALSE FALSE FALSE FALSE FALSE