代码之家  ›  专栏  ›  技术社区  ›  Novic

如何在R中选择两个复制量

  •  1
  • Novic  · 技术社区  · 6 年前

    这是一个简单的例子。 我有一个数据框架,有两个变量,如下所示:

    a <- c(1,1,1,2,2,2,3,3,6,7,4,5,5,8)
    b <- c(5,10,4,2,8,4,6,9,12,3,7,4,1,7)
    D <- data.frame(a,b)
    

    如您所见,有8个值用于 a 但它们已经复制了,我的数据框架有14个观察结果。我想创建一个有8个观测值的数据框架,其中 数量是唯一的,并且 b 值是选择的最小值,即结果应如下:

      a  b
    1 1  4
    2 2  2
    3 3  6
    4 6 12
    5 7  3
    6 4  7
    7 5  1
    8 8  7
    
    4 回复  |  直到 6 年前
        1
  •  2
  •   Jilber Urbina    6 年前

    使用R基方法:

    > D2  <- D[order(D$a, D$b ), ]
    > D2  <- D2[ !duplicated(D2$a), ]
    > D2
       a  b
    3  1  4
    4  2  2
    7  3  6
    11 4  7
    13 5  1
    9  6 12
    10 7  3
    14 8  7
    
        2
  •  3
  •   DanY    6 年前

    下面是如何使用基数r的方法:

    #both lines do the same thing, pick one
    aggregate(D$b, by = D["a"], FUN = min)
    aggregate(b ~ a, data = D, FUN = min)
    

    以下是使用data.table的方法:

    library(data.table)
    setDT(D)
    D[ , .(min(b)), by=a]
    

    以下是使用tidyverse函数的方法:

    library(tidyverse) #or just library(dplyr)
    D %>% group_by(a) 
      %>% summarize(min(b))
    
        3
  •  1
  •   akrun    6 年前

    base R 选择是

    aggregate(b ~ a, D, min)
    
        4
  •  0
  •   Ankur    6 年前

    library (dplyr)

    D<-D %>% group_by(a) %>% summarize(min(b))