Come dividere un frame di dati in r (con esempi)
È possibile utilizzare uno dei tre metodi seguenti per dividere un frame di dati in più blocchi di dati più piccoli in R:
Metodo 1: dividere manualmente il frame di dati in base ai valori delle righe
#define first n rows to include in first data frame n <- 4 #split data frame into two smaller data frames df1 <- df[row. names (df) %in% 1:n, ] df2 <- df[row. names (df) %in% (n+1):nrow(df), ]
Metodo 2: dividere il frame di dati in n frame di dati di uguale dimensione
#define number of data frames to split into n <- 3 #split data frame into n equal-sized data frames split(df, factor(sort(rank(row. names (df)) %% n)))
Metodo 3: dividere il frame di dati in base al valore della colonna
#split data frame based on particular column value df1 <- df[df$column_name == 0, ] df2 <- df[df$column_name != 0, ]
I seguenti esempi mostrano come utilizzare ciascun metodo nella pratica con il seguente frame di dati:
#create data frame df <- data. frame (ID=c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12), sales=c(7, 8, 8, 7, 9, 7, 8, 9, 3, 3, 14, 10), leads=c(0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0)) #view data frame df Sales lead ID 1 1 7 0 2 2 8 0 3 3 8 1 4 4 7 1 5 5 9 0 6 6 7 1 7 7 8 1 8 8 9 0 9 9 3 1 10 10 3 0 11 11 14 1 12 12 10 0
Metodo 1: dividere manualmente il frame di dati in base ai valori delle righe
Il codice seguente mostra come dividere un frame di dati in due blocchi di dati più piccoli, il primo contenente le righe da 1 a 4 e il secondo contenente le righe da 5 all’ultima riga:
#define row to split on
n <- 4
#split into two data frames
df1 <- df[row. names (df) %in% 1:n, ]
df2 <- df[row. names (df) %in% (n+1):nrow(df), ]
#view resulting data frames
df1
Sales lead ID
1 1 7 0
2 2 8 0
3 3 8 1
4 4 7 1
df2
Sales lead ID
5 5 9 0
6 6 7 1
7 7 8 1
8 8 9 0
9 9 3 1
10 10 3 0
11 11 14 1
12 12 10 0
Metodo 2: dividere il frame di dati in n frame di dati di uguale dimensione
Il codice seguente mostra come dividere un frame di dati in n frame di dati di uguale dimensione:
#define number of data frames to split into n <- 3 #split data frame into n equal-sized data frames split(df, factor(sort(rank(row. names (df)) %% n))) $`0` Sales lead ID 1 1 7 0 2 2 8 0 3 3 8 1 4 4 7 1 $`1` Sales lead ID 5 5 9 0 6 6 7 1 7 7 8 1 8 8 9 0 $`2` Sales lead ID 9 9 3 1 10 10 3 0 11 11 14 1 12 12 10 0
Il risultato sono tre frame di dati di uguale dimensione.
Metodo 3: dividere il frame di dati in base al valore della colonna
Il codice seguente mostra come dividere un frame di dati in due frame di dati in base al valore di una colonna specifica:
#split data frame based on particular column value df1 <- df[df$leads == 0, ] df2 <- df[df$leads != 0, ] #view resulting data frames df1 Sales lead ID 1 1 7 0 2 2 8 0 5 5 9 0 8 8 9 0 10 10 3 0 12 12 10 0 df2 Sales lead ID 3 3 8 1 4 4 7 1 6 6 7 1 7 7 8 1 9 9 3 1 11 11 14 1
Si noti che df1 contiene tutte le righe in cui “leads” era uguale a zero nel frame di dati originale e df2 contiene tutte le righe in cui “leads” era uguale a uno nel frame di dati originale.
Risorse addizionali
I seguenti tutorial spiegano come eseguire altre operazioni comuni in R:
Come unire più frame di dati in R
Come impilare le colonne del frame di dati in R
Come aggiungere una colonna al frame di dati in base ad altre colonne in R