Вы можете использовать один из следующих трех методов, чтобы разделить фрейм данных на несколько меньших фреймов данных в R:
Метод 1: разделение фрейма данных вручную на основе значений строк
#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), ]
Метод 2: разделить фрейм данных на n фреймов данных одинакового размера
#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)))
Способ 3: Разделить фрейм данных на основе значения столбца
#split data frame based on particular column value
df1 <- df[df$column_name == 0, ]
df2 <- df[df$column_name != 0, ]
В следующих примерах показано, как использовать каждый метод на практике со следующим фреймом данных:
#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
ID sales leads
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
Метод 1: разделение фрейма данных вручную на основе значений строк
В следующем коде показано, как разделить фрейм данных на два меньших фрейма данных, где первый содержит строки с 1 по 4, а второй содержит строки с 5 по последнюю строку:
#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
ID sales leads
1 1 7 0
2 2 8 0
3 3 8 1
4 4 7 1
df2
ID sales leads
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
Метод 2: разделить фрейм данных на n фреймов данных одинакового размера
Следующий код показывает, как разделить фрейм данных на n фреймов данных одинакового размера:
#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`
ID sales leads
1 1 7 0
2 2 8 0
3 3 8 1
4 4 7 1
$`1`
ID sales leads
5 5 9 0
6 6 7 1
7 7 8 1
8 8 9 0
$`2`
ID sales leads
9 9 3 1
10 10 3 0
11 11 14 1
12 12 10 0
Результатом являются три фрейма данных одинакового размера.
Способ 3: Разделить фрейм данных на основе значения столбца
В следующем коде показано, как разделить фрейм данных на два фрейма данных на основе значения в одном конкретном столбце:
#split data frame based on particular column value
df1 <- df[df$leads == 0, ]
df2 <- df[df$leads != 0, ]
#view resulting data frames
df1
ID sales leads
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
ID sales leads
3 3 8 1
4 4 7 1
6 6 7 1
7 7 8 1
9 9 3 1
11 11 14 1
Обратите внимание, что df1 содержит все строки, в которых «отведения» были равны нулю в исходном фрейме данных, а df2 содержит все строки, в которых «отведения» были равны единице в исходном фрейме данных.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные операции в R:
Как объединить несколько фреймов данных в R
Как сложить столбцы фрейма данных в R
Как добавить столбец во фрейм данных на основе других столбцов в R