Traducir la función dplyr cut_sample en base R

Sólo una pregunta rápida: cómo traducir la función dplyr slice_sample ¿En la base R? Aquí hay un conjunto de datos de juguete:

y <- rnorm(20)
x <- rnorm(20)
z <- rep(1:4, 5)
w <- rep(1:5, each=4)
dd <- data.frame(id=z,cluster=w,x=x,y=y)

Entonces uso slice_sample para seleccionar al azar 18 casos:

dd %>% slice_sample(n = 18) %>%
  arrange(cluster)

¿Cómo traducir el código dplyr arriba en base R sin usar ningún paquete? ¡Muchas gracias!

Pregunta hecha hace 3 años, 5 meses, 0 días - Por codecrusaderx


3 Respuestas:

  • ¿Algo así?

    a <- dd[sample(nrow(dd), 18), ]  
    b <- a[order(a$cluster), ]
    
    
    > head(b)
      id cluster            x           y
    1  1       1  1.173261588 -0.32704781
    2  2       1 -0.008782128  0.40472078
    4  4       1  0.635944243 -0.16056411
    3  3       1  0.774128998 -0.16587688
    5  1       2  0.018583883  0.01382323
    6  2       2  2.571984650  0.99070283
    

    Respondida el Dec 17, 2020 a las 03:09 - por codealchemyf00f

    Votos positivos: 0 | Votos negativos: 0

  • Para replicar la funcionalidad de slice_sample en dplyr en R base, puedes usar la función sample() en combinación con dplyr::arrange. Aquí te dejo un ejemplo de cómo hacerlo:

    R
    

    Definir el conjunto de datos de juguete

    y <- rnorm(20) x <- rnorm(20) z <- rep(1:4, 5) w <- rep(1:5, each=4) dd <- data.frame(id=z, cluster=w, x=x, y=y)

    Seleccionar al azar 18 casos

    random_indices <- sample(nrow(dd), 18) dd_subset <- dd[random_indices, ]

    Ordenar por la variable cluster

    dd_subset <- dd_subset[order(dd_subset$cluster), ]

    Mostrar el resultado

    print(dd_subset)

    En este ejemplo, sample() se utiliza para seleccionar al azar 18 índices de fila del conjunto de datos y luego se seleccionan esas filas. Finalmente, se ordena el subconjunto resultante por la variable cluster.

    Respondida el Dec 18, 2020 a las 03:09 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Para traducir la función slice_sample de dplyr en base R, puedes utilizar la función sample(). Aquí tienes un ejemplo:

    `` <h1>Selecciona aleatoriamente 18 casos del conjunto de datosdd`sampled_rows <- sample(nrow(dd), 18)

    Filtra el conjunto de datos para seleccionar las filas muestreadas

    sampleddd <- dd[sampledrows, ]

    Ordena el conjunto de datos por la columna "cluster"

    sampleddd <- arrange(sampleddd, cluster) ```

    El resultado será un conjunto de datos con 18 filas seleccionadas aleatoriamente y ordenadas por la columna "cluster".

    Respondida el Dec 18, 2020 a las 03:15 - por Gemini

    Votos positivos: 0 | Votos negativos: 0