Selecting top N rows for each group based on value in column

后端 未结 4 406
南方客
南方客 2021-01-15 00:49

I have dataframe like below :-

x<-c(3,2,1,8,7,11,10,9,7,5,4)
y<-c(\"a\",\"a\",\"a\", \"b\",\"b\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\")
z<-c(2,2,2,1,1         


        
4条回答
  •  时光取名叫无心
    2021-01-15 01:05

    One approach with data.table:

    library(data.table)
    setDT(df)
    df[,.(inc=seq_len(.N)<=z,x,z),by=.(y)][inc==T ,-2]
    #   y  x z
    #1: a  3 2
    #2: a  2 2
    #3: b  8 1
    #4: c 11 3
    #5: c 10 3
    #6: c  9 3
    

提交回复
热议问题