Cómo dividir DataFrame en R

En este artículo, discutiremos cómo dividir el marco de datos en el lenguaje de programación R.

Un subconjunto se puede dividir tanto de forma continua como aleatoria en función de filas y columnas. Se puede hacer referencia a las filas y columnas del marco de datos utilizando los índices y los nombres. Se pueden hacer referencia a varias filas y columnas utilizando el método c() en la base R.

Dividir marco de datos por fila

División del marco de datos por índices de fila

Se puede hacer referencia a las celdas del marco de datos utilizando los nombres e índices de fila y columna.

Sintaxis:

data-frame[start-row-num:end-row-num,]

Los números de fila se conservan en el marco de datos de salida final. 

Ejemplo: dividir el marco de datos por fila

R

# create first dataframe
data_frame1<-data.frame(col1=c(rep('Grp1',2),
                               rep('Grp2',2),
                               rep('Grp3',2)), 
                        col2=rep(1:3,2),
                        col3=rep(1:2,3) 
                        )
  
print("Original DataFrame")
print(data_frame1)
  
# extracting first four rows
data_frame_mod <- data_frame1[1:4,]
  
print("Modified DataFrame")
print(data_frame_mod)

Producción:

[1] "Original DataFrame"
col1 col2 col3 
1 Grp1    1    1 
2 Grp1    2    2 
3 Grp2    3    1 
4 Grp2    1    2 
5 Grp3    2    1 
6 Grp3    3    2 
[1] "Modified DataFrame" 
col1 col2 col3 
1 Grp1    1    1 
2 Grp1    2    2 
3 Grp2    3    1 
4 Grp2    1    2

Ejemplo: dividir el marco de datos por fila

R

# create first dataframe
data_frame1<-data.frame(col1=c(rep('Grp1',2),
                               rep('Grp2',2),
                               rep('Grp3',2)), 
                        col2=rep(1:3,2),
                        col3=rep(1:2,3) 
                        )
  
print("Original DataFrame")
print(data_frame1)
  
# extracting first four rows
data_frame_mod <- data_frame1[6,]
print("Modified DataFrame")
print(data_frame_mod)

Producción:

[1] "Original DataFrame"
col1 col2 col3 
1 Grp1    1    1 
2 Grp1    2    2 
3 Grp2    3    1 
4 Grp2    1    2 
5 Grp3    2    1 
6 Grp3    3    2 
[1] "Modified DataFrame" 
col1 col2 col3 
6 Grp3    3    2

Dividir filas de marcos de datos aleatoriamente

Las filas del marco de datos también se pueden generar aleatoriamente mediante el método set.seed(). Genera una muestra aleatoria, que luego se introduce en cualquier función generadora aleatoria ficticia arbitraria. Luego, las filas se pueden extraer comparándolas con una función. 

Ejemplo: dividir el marco de datos por filas al azar

R

# create first dataframe
data_frame1<-data.frame(col1=c(rep('Grp1',2),
                               rep('Grp2',2),
                               rep('Grp3',2)), 
                        col2=rep(1:3,2),
                        col3=rep(1:2,3),
                        col4 = letters[1:6]
                        )
  
print("Original DataFrame")
print(data_frame1)
  
# extracting last two columns
set.seed(99999)                           
  
rows <- nrow(data_frame1)
rand <- rbinom(rows, 2, 0.5)
  
data_frame_mod <- data_frame1[rand == 0, ] 
  
print("Modified DataFrame")
print(data_frame_mod)

Producción:

[1] "Original DataFrame" 
col1 col2 col3 col4
 1 Grp1    1    1    a 
2 Grp1    2    2    b 
3 Grp2    3    1    c 
4 Grp2    1    2    d 
5 Grp3    2    1    e 
6 Grp3    3    2    f 
[1] "Modified DataFrame" 
col1 col2 col3 col4
5 Grp3    2    1    e
6 Grp3    3    2    f

Dividir dataframe por columna

Dividir el marco de datos por nombres de columna

También se puede hacer referencia al marco de datos utilizando los nombres de las columnas. Se pueden especificar varios nombres de columna utilizando el método c() que contiene nombres de columna como strings. Los nombres de las columnas pueden ser de naturaleza contigua o aleatoria. 

Sintaxis:

data-frame[,c(col1, col2,...)]

Ejemplo: dividir el marco de datos por nombres de columna

R

# create first dataframe
data_frame1<-data.frame(col1=c(rep('Grp1',2),
                               rep('Grp2',2),
                               rep('Grp3',2)), 
                        col2=rep(1:3,2),
                        col3=rep(1:2,3),
                        col4 = letters[1:6]
                        )
  
print("Original DataFrame")
print(data_frame1)
  
# extracting sixth row
data_frame_mod <- data_frame1[,c("col2","col4")]
print("Modified DataFrame")
print(data_frame_mod)

Producción:

[1] "Original DataFrame" 
col1 col2 col3 col4
 1 Grp1    1    1    a 
2 Grp1    2    2    b 
3 Grp2    3    1    c 
4 Grp2    1    2    d 
5 Grp3    2    1    e 
6 Grp3    3    2    f 
[1] "Modified DataFrame" 
col2 col4 
1    1    a 
2    2    b 
3    3    c 
4    1    d 
5    2    e 
6    3    f

Dividir marco de datos por índices de columna

También se puede hacer referencia al marco de datos utilizando los índices de columna. Se pueden extraer columnas individuales y múltiples del marco de datos especificando la posición de la columna. 

Sintaxis:

data-frame[,start-col-num:end-col-num]

Ejemplo: marco de datos dividido por índices de columna

R

# create first dataframe
data_frame1<-data.frame(col1=c(rep('Grp1',2),
                               rep('Grp2',2),
                               rep('Grp3',2)), 
                        col2=rep(1:3,2),
                        col3=rep(1:2,3),
                        col4 = letters[1:6]
                        )
  
print("Original DataFrame")
print(data_frame1)
  
# extracting last two columns
data_frame_mod <- data_frame1[,c(3:4)]
print("Modified DataFrame")
print(data_frame_mod)

Producción:

[1] "Original DataFrame" 
col1 col2 col3 col4
 1 Grp1    1    1    a 
2 Grp1    2    2    b 
3 Grp2    3    1    c 
4 Grp2    1    2    d 
5 Grp3    2    1    e 
6 Grp3    3    2    f 
[1] "Modified DataFrame" 
col3 col4 
1    1    a 
2    2    b 
3    1    c 
4    2    d 
5    1    e 
6    2    f

Publicación traducida automáticamente

Artículo escrito por yashchuahan 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 *