Come replicare le righe in un frame di dati in r


È possibile utilizzare i metodi seguenti per replicare le righe in un frame di dati in R utilizzando le funzioni nel pacchetto dplyr :

Metodo 1: replicare ciascuna riga lo stesso numero di volte

 library (dplyr)

#replicate each row 3 times
df %>% slice(rep(1:n(), each = 3))

Metodo 2: replicare ciascuna riga un numero diverso di volte

 library (dplyr)

#replicate the first row 3 times and the second row 5 times
df %>% slice(rep(1:n(), times = c(3, 5)))

Gli esempi seguenti mostrano come utilizzare ciascun metodo nella pratica.

Esempio 1: replicare ciascuna riga lo stesso numero di volte

Supponiamo di avere il seguente frame di dati con due righe in R:

 #create data frame
df <- data. frame (team=c('A', 'B'),
                 dots=c(10, 15),
                 rebounds=c(4, 8),
                 assists=c(2, 5))

#view data frame
df

  team points rebound assists
1 to 10 4 2
2 B 15 8 5

Possiamo usare la seguente sintassi per ripetere ogni riga del frame di dati tre volte:

 library (dplyr)

#create new data frame that repeats each row in original data frame 3 times
new_df <- df %>% slice(rep(1:n(), each = 3))

#view new data frame
new_df

  team points rebound assists
1 to 10 4 2
2 to 10 4 2
3 to 10 4 2
4 B 15 8 5
5 B 15 8 5
6 B 15 8 5

Si noti che ciascuna delle righe nel frame di dati originale è stata ripetuta tre volte.

Esempio 2: replicare ciascuna riga un numero diverso di volte

Supponiamo di avere il seguente frame di dati con due righe in R:

 #create data frame
df <- data. frame (team=c('A', 'B'),
                 dots=c(10, 15),
                 rebounds=c(4, 8),
                 assists=c(2, 5))

#view data frame
df

  team points rebound assists
1 to 10 4 2
2 B 15 8 5

Possiamo usare la seguente sintassi per ripetere la prima riga tre volte e la seconda cinque volte:

 library (dplyr)

#create new data frame that repeats first row 3 times and second row 5 times
new_df <- df %>% slice(rep(1:n(), times = c(3, 5)))

#view new data frame
new_df

  team points rebound assists
1 to 10 4 2
2 to 10 4 2
3 to 10 4 2
4 B 15 8 5
5 B 15 8 5
6 B 15 8 5
7 B 15 8 5
8 B 15 8 5

Si noti che la prima riga del frame di dati originale è stata ripetuta tre volte e la seconda riga cinque volte.

Correlati: come utilizzare la funzione slice() in dplyr

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre operazioni comuni in dplyr:

Come selezionare le colonne per indice utilizzando dplyr
Come selezionare la prima riga per gruppo utilizzando dplyr
Come filtrare in base a più condizioni utilizzando dplyr
Come filtrare le righe contenenti una determinata stringa utilizzando dplyr

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *