Как разделить фрейм данных в R (с примерами)


Вы можете использовать один из следующих трех методов, чтобы разделить фрейм данных на несколько меньших фреймов данных в 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

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.