R语言which()函数全面解析:高效数据筛选与位置索引技巧
R中的which()函数返回满足给定条件的值的位置或索引。R中的Which()函数给出了逻辑向量中该值的位置。位置可以是行、列,甚至可以是向量。
R中which()函数的语法
which():R中的which函数返回逻辑向量中值的位置。
which(x,arr.ind = F,useNames = F)
参数说明:
- x = 输入的逻辑向量。
- arr.ind = 如果x是数组,则返回数组索引。
- useNames = 表示数组的维度名称。
which()函数的简单示例
好的,你得到了which函数的定义以及它的工作性质。现在,让我们把学到的东西实际应用起来。
我们看看它是如何工作的。
which(letters=="p")
16
which(letters=="n")
14
which(letters=="l")
12
“letters” 是一个内置常量,包含了英语字母表的26个字母,按顺序进行排列。
你在上面看到的输出表示了数据框中每个字母在字母表中的位置。正如你所见,字母”p”在字母表中排第16位,而”l”和”n”分别排在第12位和第14位。
现在让我们学习如何使用which函数。
使用which()函数与向量进行操作
现在,让我们使用R语言创建一个向量,然后通过使用which函数进行位置跟踪。
#创建一个向量
df<-c(5,4,3,2,1)
#5的位置
which(df==5)
1
#1的位置
which(df==1)
5
#大于2的值的位置
which(df>2)
1 2 3
太好了!在R中的which()函数返回给定输入值的位置。你还可以使用这个函数来传递特定的条件,并得到与条件匹配的输出位置,就像我们在上一个例子中看到的那样。
在数据框中使用which()函数
现在,让我们看看如何在R语言中将which函数应用于数据框。
df<-datasets::BOD
df
Time demand
1 1 8.3
2 2 10.3
3 3 19.0
4 4 16.0
5 5 15.6
6 7 19.8
为此,我们使用了BOD数据集,该数据集包含两列,即时间和需求。这是另一个内置数据集。
让我们使用 which 函数,并尝试找出数据中值的位置。
which(df$demand=='10.3')
2
您还可以将一系列数值输入which()函数中。看下面的示例,我正在尝试从数据框中找到两个数值的位置。
which(df$demand==c(8.3,16.0))
1 4
使用which()函数查找数据框中具有数值的列
甚至可以使用which()函数在包含数值数据的数据中查找列名。
让我们看看在R语言中如何运作。为此,我们使用了”鸢尾花”数据集。
df<-datasets::iris
df
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
7 4.6 3.4 1.4 0.3 setosa
8 5.0 3.4 1.5 0.2 setosa
9 4.4 2.9 1.4 0.2 setosa
10 4.9 3.1 1.5 0.1 setosa
11 5.4 3.7 1.5 0.2 setosa
test<-which(sapply(df,is.numeric))
colnames(df)[test]
"Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width"
输出显示,虹膜数据集中有5个列。其中,4个是数值列,1个是分类列(物种)。
我们在R中使用了sapply函数和which()方法。
如果您是数据分析师,那么which()函数将会对您非常有价值,它根据输入条件仅返回数字列的名称。
在矩阵中使用which()函数
最后,我们已经到达了R中的矩阵。在R语言中,可以使用which()函数来获取矩阵中值的位置。在本章节中,您还将了解到arr.ind参数的用法。
首先要做的事情就是建立一个矩阵。
df<-matrix(rep(c(1,0,1),4),nrow = 4)
df
[,1] [,2] [,3]
[1,] 1 0 1
[2,] 0 1 1
[3,] 1 1 0
[4,] 1 0 1
现在,让我们使用which()函数来获取矩阵中值为’0’的位置。
which(df==0,arr.ind = T)
row col
[1,] 2 1
[2,] 1 2
[3,] 4 2
[4,] 3 3
好的,which函数已经返回了矩阵中值为’0’的位置。
“0”的第一次出现是在第二行第一列。然后下一次出现在第一行第二列。接着,是在第四行第二列。最后,是在第三行第三列。
结论
在数据分析和挖掘中,R语言中的which()函数是最常用的函数之一。
这个函数给出了数据中数值的位置。如果你正在处理大量的数据,那么在其中找到特定数值的位置将变得困难,这就是 R 中的 which() 函数发挥作用的地方。
现在就这样吧。祝您定位愉快!
更多阅读:R文档