R でデータ フレームを分割する方法 (例あり)


次の 3 つの方法のいずれかを使用して、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

   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

方法 1: 行の値に基づいてデータ フレームを手動で分割する

次のコードは、データ フレームを 2 つの小さなデータ ブロックに分割する方法を示しています。最初のデータ ブロックには 1 行目から 4 行目が含まれ、2 番目のデータ ブロックには 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

  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

方法 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`
  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

結果は、同じサイズの 3 つのデータ フレームになります。

方法 3: 列の値に基づいてデータ フレームを分割する

次のコードは、特定の列の値に基づいてデータ フレームを 2 つのデータ フレームに分割する方法を示しています。

 #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

df1 には、元のデータ フレームで “leads” が 0 に等しいすべての行が含まれ、 df2 には、元のデータ フレームで “leads” が 1 に等しいすべての行が含まれることに注意してください。

追加リソース

次のチュートリアルでは、R で他の一般的な操作を実行する方法について説明します。

Rで複数のデータフレームをマージする方法
R でデータ フレーム列をスタックする方法
R の他の列に基づいてデータ フレームに列を追加する方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です