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, 6 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ónsample()
en combinación condplyr::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 variablecluster
.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ónsample()
. Aquí tienes un ejemplo:``
<h1>Selecciona aleatoriamente 18 casos del conjunto de datos
dd`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