En este artículo, aprenderemos cómo extraer muestras aleatorias de filas en un DataFrame en el lenguaje de programación R con una condición anidada.
Método 1: Usar muestra()
Usaremos la función sample() para llevar a cabo esta tarea. La función sample() en R Language crea muestras aleatorias basadas en los parámetros proporcionados en la llamada de función. Toma un vector o un entero positivo como objeto en el parámetro de la función.
Otra función que usaremos es which(). Esta función nos ayudará a proporcionar condiciones según las cuales se extraerán las muestras. La función which() devuelve los elementos (junto con los índices de los elementos) que satisfacen la condición dada en los parámetros.
Sintaxis: df[ muestra(que (condiciones) ,n), ]
Parámetros:
- df: trama de datos
- n: número de muestras a generar
- condiciones: las muestras se extraen de acuerdo con esta condición. Ej : df$año > 5
Marco de datos en uso:
nombre | año | longitud | educación | |
---|---|---|---|---|
1 | Bienvenidos | 10 | 40 | sí |
2 | a | 51 | N / A | sí |
3 | Frikis | 19 | N / A | no |
4 | por | 126 | 100 | no |
5 | Frikis | 99 | 95 | sí |
Por lo tanto, para realizar este enfoque, primero se crea el marco de datos y luego se pasa a sample() junto con la condición que se usará para extraer filas del marco de datos. A continuación se muestran implementaciones que utilizan el marco de datos anterior para ilustrar lo mismo.
Ejemplo 1:
R
df <- data.frame( name = c("Welcome", "to", "Geeks", "for", "Geeks"), year = c(10, 51, 19, 126, 99), length = c(40, NA, NA, 100, 95), education = c("yes", "yes", "no", "no", "yes") ) df # Printing 2 rows print("2 samples") df[ sample(which (df$year > 5) ,2), ]
Producción:
name year length education 1 Welcome 10 40 yes 2 to 51 NA yes 3 Geeks 19 NA no 4 for 126 100 no 5 Geeks 99 95 yes [1] "2 samples" name year length education 1 Welcome 10 40 yes 2 to 51 NA yes
Ejemplo 2:
R
df <- data.frame( name = c("Welcome", "to", "Geeks", "for", "Geeks"), year = c(10, 51, 19, 126, 99), length = c(40, NA, NA, 100, 95), education = c("yes", "yes", "no", "no", "yes") ) df # Printing 3 rows print("3 samples") df[ sample(which (df$education !="no") ,3), ]
Producción:
name year length education 1 Welcome 10 40 yes 2 to 51 NA yes 3 Geeks 19 NA no 4 for 126 100 no 5 Geeks 99 95 yes [1] "3 samples" name year length education 5 Geeks 99 95 yes 1 Welcome 10 40 yes 2 to 51 NA yes
Método 2: Usar la función sample_n()
La función sample_n() en R Language se usa para tomar muestras aleatorias de un marco de datos.
Sintaxis : muestra_n(x, n)
Parámetros :
- x : Marco de datos
- n : tamaño/número de elementos a seleccionar
Junto con la función sample_n(), también hemos utilizado la función filter() . La función filter() en R Language se usa para elegir casos y filtrar los valores según la expresión de filtrado.
Sintaxis : filtro (x, expr)
Parámetros :
- x : Objeto a filtrar
- expr : expresión como base para filtrar
Hemos cargado el paquete dplyr ya que contiene las funciones filter() y sample_n() . En los parámetros de la función de filtro, hemos pasado nuestro marco de datos de muestra->df y nuestro condicional anidado como argumentos. Luego, hemos utilizado nuestra función sample_n() para extraer el número » n » de muestras del marco de datos después de satisfacer las condiciones.
Sintaxis: filter(df, condition) %>% sample_n(., n)
Parámetros:
- df: objeto de marco de datos
- condition: Condicionales anidadas. Ej : df$nombre!= “a”
- n: Número de muestras
Ejemplo 1:
R
library(dplyr) df <- data.frame( name = c("Welcome", "to", "Geeks", "for", "Geeks"), year = c(10, 51, 19, 126, 99), length = c(40, NA, NA, 100, 95), education = c("yes", "yes", "no", "no", "yes") ) df # Printing 2 rows print("2 samples") filter(df, df$name != "to") %>% sample_n(., 2)
Producción:
name year length education 1 Welcome 10 40 yes 2 to 51 NA yes 3 Geeks 19 NA no 4 for 126 100 no 5 Geeks 99 95 yes [1] "2 samples" name year length education 1 Welcome 10 40 yes 2 Geeks 99 95 yes
Ejemplo 2:
R
library(dplyr) df <- data.frame( name = c("Welcome", "to", "Geeks", "for", "Geeks"), year = c(10, 51, 19, 126, 99), length = c(40, NA, NA, 100, 95), education = c("yes", "yes", "no", "no", "yes") ) df # Printing 2 rows print("2 samples") filter(df, df$year >20 ) %>% sample_n(., 2)
Producción:
name year length education 1 Welcome 10 40 yes 2 to 51 NA yes 3 Geeks 19 NA no 4 for 126 100 no 5 Geeks 99 95 yes [1] "2 samples" name year length education 1 for 126 100 no 2 to 51 NA yes
Publicación traducida automáticamente
Artículo escrito por sudhanshublaze y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA