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

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to