从R中的数据框中提取行

时间:2014-06-01 14:32:57

标签: r dataframe

假设我们有一个像这样的矩阵:

> A = matrix( 
+   c(2, 4, 3, 1, 5, 7), # the data elements 
+   nrow=2,              # number of rows 
+   ncol=3,              # number of columns 
+   byrow = TRUE)        # fill matrix by rows 

> A                      # print the matrix 
     [,1] [,2] [,3] 
[1,]    2    4    3 
[2,]    1    5    7

现在,我只是使用了这个小例子,但想象一下矩阵是否更大,如200行和5列等。我想要做的是从第3列获取最小值,并提取该行。换句话说,查找并获取第3个属性在该数据框的整个列中最低的行。

dataToReturn <- which(A== min(A[, 3])

但这不起作用。

2 个答案:

答案 0 :(得分:2)

另一种方法是使用which.min

A[which.min(A[, 3]), ]
##[1] 2 4 3

答案 1 :(得分:1)

您可以通过[]min进行简单的子集化来完成此操作:

A[A[,3] == min(A[,3]),]
[1] 2 4 3

这是:返回A的那些行,其中第3列的值等于A第3列的最小值。

如果您有这样的矩阵:

A <- matrix(c(2,4,3,1,5,7,1,3,3), nrow=3, byrow = T)
> A
     [,1] [,2] [,3]
[1,]    2    4    3
[2,]    1    5    7
[3,]    1    3    3

> A[which.min(A[, 3]), ]      #returns only the first row with minimum condition
[1] 2 4 3

> A[A[,3] == min(A[,3]),]     #returns all rows with minimum condition
     [,1] [,2] [,3]
[1,]    2    4    3
[2,]    1    3    3