How to get rows with min values in one column, grouped by other column, while keeping other columns?

前端 未结 2 1011
轻奢々
轻奢々 2021-01-22 08:53

I have the following data:

df <- data.frame(A = c(1,2,3,4,5,6), B=c(\"P\",\"P\",\"P\",\"Q\",\"Q\",\"Q\"), C=c(\"a\",\"b\",\"c\",\"d\",\"e\",\"f\"))
df
##              


        
2条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2021-01-22 09:36

    you can also use the split-apply technique:

    # split `df` on the field 'b' 
    tmp <- split(df,df$B)
    
    # reduce to the row with the minimum value of A
    tmp  <-  lapply(tmp,function(x)
                    x[x$A == min(x$A),])
    
    # bind the rows together
    do.call(rbind,tmp)
    
    
    #>   A B C
    #> P 1 P a
    #> Q 4 Q d
    

提交回复
热议问题