es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo usar group_by() con rep_len() en R

Déjame saber si necesito un ejemplo ficticio para esto, pero básicamente tengo un df de subgrupos, cada subgrupo tiene una longitud diferente (normalmente 30-35k valores). Me gustaría unir en un vector con reciclaje parcial de vectores de c(1:200). A partir de esta pregunta, tengo la idea de que puedo usar replen() para sortear el anti-reciclaje parcial del dataframe. El problema es que no puedo definir length.out en replen(), ya que length.out cambia con cada subgrupo. Cualquier ayuda sería apreciada. Intenté hacer esto:

df_new <- df %>%
group_by(subgroup) %>%
mutate(newcol <- rep_len(1:200, length.out=.))

Lo cual arrojó un error de longitud inválida. También intenté

df_new <- df %>%
group_by(subgroup) %>%
mutate(newcol <- rep_len(1:200, length.out=nrow(.)))

Pero esto arroja un error que length.out es la longitud de todo mi df, no del subgrupo anterior. ¡Cualquier ayuda sería apreciada!

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El problema aquí es que el parámetro length.out en rep_len() necesita ser dinámico y cambiar con cada subgrupo. Una forma de resolver esto es utilizar la función n() dentro de mutate() para obtener el número de filas en cada subgrupo, y luego utilizar eso como parámetro length.out en rep_len(). Aquí tienes un ejemplo:

    df_new <- df %>%
      group_by(subgrupo) %>%
      mutate(nuevacol = rep_len(1:200, length.out = n()))
    

    Esto debería unir el vector con reciclaje parcial asegurando que el parámetro length.out cambie dinámicamente para cada subgrupo.

Comments are closed.