Truncating a dataframe according to count of vector elements

前端 未结 2 1816
小鲜肉
小鲜肉 2021-01-25 08:27

I have a dataframe df, containing three vectors:

subject  condition  value
01       A          12
01       A          6
01       B          10
01            


        
2条回答
  •  北海茫月
    2021-01-25 08:50

    For each subject/condition pair create a sequence number seq for its rows and then only keep those rows whose sequence number is less than 3.

    subset(transform(DF, seq = ave(value, subject, condition, FUN = seq_along)), seq < 3)
    

    giving:

      subject condition value seq
    1      01         A    12   1
    2      01         A     6   2
    3      01         B    10   1
    4      01         B     2   2
    5      02         A     5   1
    6      02         A    11   2
    7      02         B     3   1
    8      02         B     5   2
    

    Note

    The input in reprodudible form is assumed to be:

    Lines <- "subject  condition  value
    01       A          12
    01       A          6
    01       B          10
    01       B          2
    02       A          5
    02       A          11
    02       B          3
    02       B          5
    02       B          9"
    DF <- read.table(text = Lines, header = TRUE, strip.white = TRUE,
      colClasses = c("character", "character", "numeric"))
    

提交回复
热议问题