Cómo extraer una muestra aleatoria de filas en R DataFrame con condición anidada

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
2 a 51 N / A
3 Frikis 19 N / A no
4 por 126 100 no
5 Frikis 99 95

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *