如何使用 r 中的 which 函数(附示例)


R 中的which()函数返回逻辑向量中TRUE元素的位置。

本教程提供了该功能实际使用的几个示例。

示例 1:查找向量中的元素

以下代码显示如何查找向量中所有等于 5 的元素的位置:

 #create data
data <- c(1, 2, 2, 3, 4, 4, 4, 5, 5, 12)

#find the position of all elements equal to 5
which (data == 5)

[1] 8 9

我们看到向量中位置89的元素等于值 5。

我们还可以找到向量中所有等于 5 的元素的位置:

 #find the position of all elements not equal to 5
which (data != 5)

[1] 1 2 3 4 5 6 7 10

我们还可以找到哪些元素在两个值之间或在两个值之外:

 #find the position of all elements with values between 2 and 4
which (data >= 2 & data <= 4)

[1] 2 3 4 5 6 7

#find the position of all elements with values outside of 2 and 4
which (data < 2 | data > 4)

[1] 1 8 9 10

示例 2:计算向量中的出现次数

以下代码演示如何使用length()函数查找向量中大于特定值的元素数量:

 #createdata
data <- c(1, 2, 2, 3, 4, 4, 4, 5, 5, 12)

#find number of elements greater than 4
length ( which (data > 4))

[1] 3

我们可以看到这个向量中有3个元素的值大于4。

示例 3:在数据框中查找行

以下代码显示如何返回数据框中包含特定列中的最大值或最小值的行:

 #create data frame
df <- data. frame (x = c(1, 2, 2, 3, 4, 5),
                 y = c(7, 7, 8, 9, 9, 9),
                 z = c('A', 'B', 'C', 'D', 'E', 'F'))

#view data frame
df

  X Y Z
1 1 7 A
2 2 7 B
3 2 8 C
4 3 9 D
5 4 9 E
6 5 9 F

#return row that contains the max value in column x
df[ which . max (df$x), ]

  X Y Z
6 5 9 F

#return row that contains the min value in column x
df[ which . min (df$x), ]

  X Y Z
1 1 7 A

示例 4:按数据框中的行进行子集

以下代码显示如何将数据框细分为满足特定条件的行:

 #create data frame
df <- data. frame (x = c(1, 2, 2, 3, 4, 5),
                 y = c(7, 7, 8, 9, 9, 9),
                 z = c('A', 'B', 'C', 'D', 'E', 'F'))

#view data frame
df

  X Y Z
1 1 7 A
2 2 7 B
3 2 8 C
4 3 9 D
5 4 9 E
6 5 9 F

#return subset of data frame where values in column y are greater than 8
df[ which (df$y > 8), ]

  X Y Z
4 3 9 D
5 4 9 E
6 5 9 F

此页面上查找更多 R 教程。

添加评论

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