Is there is a way to group rows together based on a common column value (id
), then, mutate a new column with a new id (new.id
) based on whether within each group the values are above and/or below 1000? Such as:
< 1000 = "low/low"
(where all values in that groups are below 1000)< 1000 and > 1000 = "low/high"
(where some are below and above 1000)> 1000 = "high/high"
(where all values are above 1000)
Data
#Example
id values
1 a 200
2 a 300
3 b 100
4 b 2000
5 b 3000
6 c 4000
7 c 2000
8 c 3000
9 d 2400
10 d 2000
11 d 400
#dataframe:
structure(list(id = c("a", "a", "b", "b", "b", "c", "c", "c",
"d", "d", "d"), values = c(200, 300, 100, 2000, 3000, 4000, 2000,
3000, 2400, 2000, 400)), class = "data.frame", row.names = c(NA,
-11L))
Desired output
id values new.id
1 a 200 low/low
2 a 300 low/low
3 b 100 low/high
4 b 2000 low/high
5 b 3000 low/high
6 c 4000 high/high
7 c 2000 high/high
8 c 3000 high/high
9 d 2400 low/high
10 d 2000 low/high
11 d 400 low/high
A dplyr
solution would be great, but open to any others!