在本教程中,您将学习如何在 R 中使用 range 函数。在 R 编程语言中,range 函数用于多种需要使用统计和图形函数进行数据分析的实际应用中。您还将学习如何在向量或数据框上对包含 NA 值和 Inf 值的数据使用 range 函数。
从统计学上讲,数据集的范围 (range) 定义为最大值和最小值之间的差,即 (最大值 - 最小值)。
在 R 编程中,range() 函数定义为 R 中向量或数据框列内最大(maximum)和最小(minimum)数据值之间的区间。
虽然定义看起来相同,但 R 编程中的 range 函数的不同之处在于它只返回两个极值,而不是差值。因此,R 中的 range() 适用于以下情况:
R 源代码中的 range() 函数通过以下语法声明。
range(x,na.rm = FALSE)
其中
让我们从一些简单的实际示例开始,以便更好地理解。首先,创建一个包含一组值的数值数据类型的向量 x。
#Created a vector of numeric data type using c()
x = c(24,5,6,7,7,-1,0)
cat("The numeric vector x is :",x,"\n")
执行后的 R 代码返回一个向量 x,如下所示
The numeric vector x is : 24 5 6 7 7 -1 0
现在,通过在向量 x 上应用 range() 函数,您可以从向量 x 中找到最大值 (24) 和最小值 (-1)。
range(x)
最小值和最大值在 x 中返回。
[1] -1 24
NA 是一个保留字,表示值不可用或缺失,即“不可用 (Not Available, NA)”。我们需要通过向 range() 添加一个参数 na.rm 来更改语法,其值可以是 TRUE 或 FALSE。如果输入向量或数据结构中存在 NA,range 函数将无法返回结果。因此,将 na.rm 赋值为 TRUE 将在查找 range() 时移除输入中存在的 NA,并提供准确的结果。
考虑相同的向量 x,其中在一组给定值中包含 NA,以及 Inf,这是 R 中表示无穷大的另一个保留字。
x = c(24,5,Inf,6,7,7,-1,0,NA)
应用 range(x) 我们得到
[1] NA NA
从输出中可以清楚地看到,带有 NA 的输入没有被 range() 评估。这里我们使用修改后的语法来移除 NA。
range(x,na.rm=TRUE)
在 range() 内部添加 na.rm=TRUE 后的输出返回了最小值(-1)和最大值(Inf),这排除了向量值中的 NA。
[1] -1 Inf
让我们首先创建一个包含几个不同类别项目的数据框,并找出价格最低和最高的项目。
items = data.frame(ITEMS = c("Fruit","Fruit","Fruit","Fruit","Fruit","Vegetable","Vegetable","Vegetable","Vegetable","Dairy","Dairy","Dairy","Dairy","Dairy"),
ITEM_NAME = c("Apple","Banana","Orange","Mango","Papaya","Carrot","Potato","Brinjal","Raddish","Milk","Curd","Cheese","Milk","Paneer"),
PRICE = c(100.981,80.643,80.223,90.3,65.3,71.9,62.2,71.3,25.1,62.9,41.9,35.7,50.9,121.7))
items
输出的 items 数据框是
ITEMS ITEM_NAME PRICE 1 Fruit Apple 100.981 2 Fruit Banana 80.643 3 Fruit Orange 80.223 4 Fruit Mango 90.300 5 Fruit Papaya 65.300 6 Vegetable Carrot 71.900 7 Vegetable Potato 62.200 8 Vegetable Brinjal 71.300 9 Vegetable Raddish 25.100 10 Dairy Milk 62.900 11 Dairy Curd 41.900 12 Dairy Cheese 35.700 13 Dairy Milk 50.900 14 Dairy Paneer 121.700
通过对数据框 items 应用 range 函数,我们得到最大值和最小值。
range(items$PRICE)
[1] 25.1 121.7
R 编程语言中的范围也可以使用 min() 和 max() 函数来确定。min() 函数在输入向量或数据类型中找到最小的数据值。max() 函数从给定的输入中找到最大的数据值。
min(<vector>,na.rm=TRUE) #To find minimum
max(<vector>,na.rm=TRUE) #To find maximum
一个在 R 中使用 min() 和 max() 的简单程序,其中 na.rm 用于排除存在的 NA。使用 c() 创建了一个数值数据类型的向量 x,并为 max() 函数返回 Inf,为 min() 函数返回 -1。
x = c(24,5,Inf,6,7,7,-1,0,NA)
> print(max(x,na.rm=TRUE))
[1] Inf
> print(min(x, na.rm=TRUE))
[1] -1
观测值的范围可以通过计算最高值和最低值之间的差来得到。同样的理论也适用于从给定输入中查找向量或数据框的范围。
Range = max(<vector>,na.rm=TRUE)- min(<vector>,na.rm=TRUE)
使用 min() 和 max() 查找范围的程序
#Created a vector of numeric data type using c()
x = c(24,5,4,6,7,7,-1,0,NA)
print(x)
# find range
print(max(x, na.rm=TRUE)-min(x, na.rm=TRUE))
R 源代码的输出是
[1] 24 5 4 6 7 7 -1 0 NA [1] 25
数据框列的范围也可以使用最大值(max)和最小值(min)函数来确定,就像我们对向量所做的那样。数据框中任何特定列的最高值可以使用 max() 函数获得。数据框中列的最低值可以使用 min() 函数获得。在这两种情况下,都可以使用 na.rm=TRUE 排除 NA 值。
max(dataframe$column_name,na.rm=TRUE)-min(dataframe$column_name,na.rm=TRUE)
查找数据框中范围的程序。
# create dataframe
x = data.frame(first=c(98, 5, 67, 67, 23, 45, 78, NA, 89), sec 41, 96, 34, 27, 23, NA, 73,NA))
# display
print(x)
上面的 R 代码使用名为“first”和“second”的两列创建了一个数据框。让我们找出这两列的范围。
# find range in column1
print(max(x$first, na.rm=TRUE)-min(x$first, na.rm=TRUE))
# find range in column2
print(max(x$second, na.rm=TRUE)-min(x$second, na.rm=TRUE))
上述代码的执行结果显示
[1] 93 [1] 73
整个数据框的范围是通过计算存在的最大值和最小值之间的差来获得的,这又是由 max() 和 min() 函数确定的。
max(dataframe,na.rm=TRUE)-min(dataframe,na.rm=TRUE)
查找数据框中整个范围的程序
# create dataframe
x = data.frame(first=c(98, 5, 67, 67, 23, 45, 78, NA, 89), sec 41, 96, 34, 27, 23, NA, 73,NA))
# display
print(x)
# find range in entire dataframe
print(max(x, na.rm=TRUE)-min(x, na.rm=TRUE))
[1] 93