Problema
Deseamos añadir dos columnas con el mínimo y máximo de la columna old.var para cada grupo de la columna id: 1, 2 y 3.
  id old.var
1  1       1
2  1       2
3  1       3
4  2       5
5  2       7
6  2       9
7  2      11
8  3       3
9  3       4
df <- structure(list(id = c(1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 3L), old.var = c(1L, 
2L, 3L, 5L, 7L, 9L, 11L, 3L, 4L)), .Names = c("id", "old.var"
), class = "data.frame", row.names = c(NA, -9L))
Solución
df$min.var <- ave(df$old.var, df$id, FUN = min)
df$max.var <- ave(df$old.var, df$id, FUN = max)
library(dplyr)
df %>% 
  group_by(id) %>%
  mutate(min.var = min(old.var), max.var = max(old.var))
  id old.var min.var max.var
1  1       1       1       3
2  1       2       1       3
3  1       3       1       3
4  2       5       5      11
5  2       7       5      11
6  2       9       5      11
7  2      11       5      11
8  3       3       3       4
9  3       4       3       4
Referencias
 
 Nube de datos
Nube de datos
No hay comentarios:
Publicar un comentario