-1

I want to create new column that will get the highest number by group

lkup <- data.frame(label = c("romeo", "juliet"), number = c(2, 3))

dat <- read.table(header = TRUE, text = "chrom   position    strand  value   label
    chr1       17432    -           0   romeo
    chr1       17433    -           0   romeo
    chr1       17434    -           0   romeo
    chr1       17435    -           0   romeo
    chr1       17409    -           1   juliet
    chr1       17410    -           1   juliet
    chr1       17411    -           1   juliet")

library(dplyr)

    dat %>%
       left_join(lkup, by = "label")  %>%
       group_by(label) %>%
       mutate(number = row_number() + number - 1)

this would be the outpuut

#output
    chrom   position      value    label   number  label1  max_number
    chr1    17432   -   0          romeo    2      romeo      5   
    chr1    17433   -   0          romeo    3       juliet    5
    chr1    17434   -   0          romeo    4
    chr1    17435   -   0          romeo    5
    chr1    17409   -   1          juliet   3
    chr1    17410   -   1          juliet   4
    chr1    17411   -   1          juliet   5
A. Suliman
  • 12,923
  • 5
  • 24
  • 37

1 Answers1

0

We can use max after creating the 'number' column

dat %>%
    left_join(lkup, by = "label")  %>%
     group_by(label) %>% 
     mutate(number = row_number() + number - 1,
     max_number = max(number))
akrun
  • 874,273
  • 37
  • 540
  • 662