【问题标题】:print the minimum for each row in a dataset in R打印R中数据集中每一行的最小值
【发布时间】:2020-10-23 01:35:45
【问题描述】:

我正在尝试打印数据集中每一行的最小值(和最大值)。我可以使用它来打印一行 min(dataset1[1,])

但是我怎样才能修改这个来为所有 100 行做呢?

【问题讨论】:

    标签: r


    【解决方案1】:

    您可以使用range 同时给出最小值和最大值。

    t(apply(d, 2, range))
    #          [,1]      [,2]
    # X1 -0.5646982 1.3709584
    # X2 -0.1061245 2.0184237
    # X3 -1.3888607 2.2866454
    # X4 -2.6564554 1.3201133
    # X5 -1.7813084 1.8951935
    # X6 -1.7631631 0.4600974
    

    为了速度,试试

    matrixStats::colRanges(as.matrix(d))
    

    数据:

    set.seed(42)
    d <- data.frame(matrix(rnorm(5*6), 5, 6))
    

    【讨论】:

      【解决方案2】:

      这行得通吗?使用 dplyr 包。

      set.seed(123)
      dat <- data.frame(c1 = round(rnorm(10,10,1)),
                         c2 = round(rnorm(10,10,1)),
                         c3 = round(rnorm(10,10,1)))
      dat %>% rowwise() %>% mutate(row_min = min(c_across(c1:c3)), row_max = max(c_across(c1:c3)))
      
      # A tibble: 10 x 5
      # Rowwise: 
            c1    c2    c3 row_min row_max
         <dbl> <dbl> <dbl>   <dbl>   <dbl>
       1     9    11     9       9      11
       2    10    10    10      10      10
       3    12    10     9       9      12
       4    10    10     9       9      10
       5    10     9     9       9      10
       6    12    12     8       8      12
       7    10    10    11      10      11
       8     9     8    10       8      10
       9     9    11     9       9      11
      10    10    10    11      10      11
      

      【讨论】:

        【解决方案3】:

        您可以使用apply 函数对数据框的每一行运行方法。比如下面会求出数据框dataset每一行的最小值:

        apply(dataset, 1, min)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-12-23
          • 2016-04-13
          • 2013-06-05
          • 1970-01-01
          • 2013-07-02
          • 2021-12-13
          • 1970-01-01
          相关资源
          最近更新 更多