R语言 如何提取带有最小或最大值的数据框行

R语言 如何提取带有最小或最大值的数据框行

在R编程语言中,行和列的表格排列形成了一个数据框架,它支持许多访问和修改数据的方法。应用查询和聚合函数,如最小、最大和计数,可以很容易地在数据框架单元格值上进行。因此,根据单元格中的数值访问数据框架的子集相对来说非常容易。

例子1: 根据整个数据框架的值来确定具有最小或最大值的行。

通过对数据框架的每一行和每一列分别使用两个循环,对数据框架单元格进行迭代。单元的值分别与初始的最小值和最大值进行比较,如果该值满足约束条件,则进行更新。另外,还声明了一个变量来保持满足条件的当前行索引。然后,访问数据帧中这个索引的行。时间复杂度与数据框架的大小成多项式关系。

# declaring a data frame in R
data_frame = data.frame(C1 = c(5:8),
                        C2 = c(1:4),
                        C3 = c(9:12),
                        C4 = c(13:16))
 
print("Original data frame")
print(data_frame)
 
# declaring initial values for min and max
min = 32767
max = -32767
min_row_indx = 0
max_row_indx = 0
 
# looping over the data frame values
for (i in 1:nrow(data_frame)){
   
# for-loop over columns
for(j in 1:ncol(data_frame)) {  
   
        # checking if the dataframe
          # cell value is less than minimum
        if(data_frame[i,j]<min){
           
               # replacing the minimum
              # with the smaller value
            min = data_frame[i,j]
           
            # updating the row with the
              # smallest value found until now
            min_row_indx = i
        }
   
        # checking if the data frame
          # cell value is more than maximum
        if(data_frame[i,j]>max){
           
              # replacing the minimum
            # with the smaller value
            max = data_frame[i,j]
           
            # updating the row with the
              # smallest value found until now
            max_row_indx = i
        }
    }
}
# printing the row with minimum value
print ("Row with minimum value in the data frame")
print (data_frame[min_row_indx,])
 
# printing the row with maximum value
print ("Row with maximum value in the data frame")
print (data_frame[max_row_indx,])

输出

[1] "Original data frame"
 C1 C2 C3 C4
1  5  1  9 13
2  6  2 10 14
3  7  3 11 15
4  8  4 12 16
[1] "Row with minimum value in the data frame"
 C1 C2 C3 C4
1  5  1  9 13
[1] "Row with maximum value in the data frame"
 C1 C2 C3 C4
4  8  4 12 16

例2: 根据数据框架的列来确定具有最小或最大值的行

R中的函数which.min()可以用来计算作为参数指定的对象中所有数值的最小值,不管它是一个列表、矩阵还是数据框。类似地,which.max()计算所有数值中的最大值。为了选择数据框的某一列,我们使用 df$colname ,然后将其作为数据框的索引,用指定的聚合函数提取完整的行。这种方法可以应用于所有的数据类型,数字、字符串以及因子。由于我们直接访问和比较这个特定列的所有值,因此所需的时间复杂性与列的长度成线性关系。

以下是R语言的语法,用于提取参数中指定的列中具有最小或最大值的行。

语法: df[which.min(df$colname),] 。

参数 :

  • df – 要提取最小或最大值的数据框
  • colname – 要考虑计算最小值或最大值的列名。

返回: 在特定列中具有最大或最小单元格值的行。

代码

# declaring a data frame in R
data_frame = data.frame(C1 = c(1:4),
                        C2 = c( 5:8),
                        C3 = c(9:12),
                        C4 = c(13:16))
 
print("Original data frame")
print(data_frame)
 
# extracting the row with
# maximum value in C2 column
print ("Row with max C2 value")
data_frame[which.max(data_frameC2),]
 
# extracting the row with
# minimum value in C4 column
print ("Row with min C4 value")
data_frame[which.min(data_frameC4),]

输出

[1] "Original data frame"
 C1 C2 C3 C4
1  1  5  9 13
2  2  6 10 14
3  3  7 11 15
4  4  8 12 16
[1] "Row with max C2 value"
 C1 C2 C3 C4
4  4  8 12 16
[1] "Row with min C4 value"
 C1 C2 C3 C4
1  1  5  9 13

如果数据框包含字符串类型的变量值,则在对该数据进行按字母顺序排序时计算出最小值和最大值。

# declaring a data frame in R
data_frame = data.frame(C1= c("a","b","c","d"),
                        C2= c("geeks","dataframe","in","R"),
                        C3= c(9:12),C4=c(13:16))
 
print("Original data frame")
print(data_frame)
 
# extracting the row with maximum value in
# C2 column
print ("Row with max C1 value")
data_frame[which.max(data_frameC1),]
 
# extracting the row with minimum value in
# C4 column
print ("Row with min C2 value")
data_frame[which.min(data_frameC2),]

输出

[1] "Original data frame"
 C1        C2 C3 C4
1  a     geeks  9 13
2  b dataframe 10 14
3  c        in 11 15
4  d         R 12 16
[1] "Row with max C1 value"
 C1 C2 C3 C4
4  d  R 12 16
[1] "Row with min C2 value"
 C1        C2 C3 C4
2  b dataframe 10 14

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程