[R] Group by and duplicate a value/dplyr

Elahe chalabi ch@|@b|@e|@he @end|ng |rom y@hoo@de
Tue May 11 13:11:46 CEST 2021


Hi all,

I have the following data frame 


dput(df)
    structure(list(Department = c("A", "A", "A", "A", "A", "A", "A", 
"A", "B", "B", "B", "B", "B", "B", "B", "B"), Class = c(1L, 1L, 
1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L), Value = c(0L, 
100L, 800L, 800L, 0L, 300L, 1200L, 1200L, 0L, 0L, 400L, 400L, 
200L, 800L, 1200L, 1200L)), class = "data.frame", row.names = c(NA, 
-16L))


I would like to group by "Department" and "Class" and repeat the minimum value of "Valule" excluding zeros or get the second minimum value. The desired output is:


    dput(df)
    structure(list(Department = c("A", "A", "A", "A", "A", "A", "A", 
"A", "B", "B", "B", "B", "B", "B", "B", "B"), Class = c(1L, 1L, 
1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L), Value = c(0L, 
100L, 800L, 800L, 0L, 300L, 1200L, 1200L, 0L, 0L, 400L, 400L, 
200L, 800L, 1200L, 1200L), MinValue = c(100L, 100L, 100L, 100L, 
300L, 300L, 300L, 300L, 400L, 400L, 400L, 400L, 200L, 200L, 200L, 
200L)), class = "data.frame", row.names = c(NA, -16L))

   
how should I change the following dplyr to give me the desired output? 


   df <- 
  df %>%
  group_by(Department,Class) %>%
  mutate(MinValue=min(Value) )


Thanks for any help.
Elahe



More information about the R-help mailing list