如何在 r 中拆分数据框(附示例)


在 R 中,您可以使用以下三种方法之一将数据帧拆分为多个较小的数据块:

方法一:根据行值手动分割数据框

 #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), ]

方法二:将数据帧分成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)))

方法三:根据列值分割数据框

 #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 行到第 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

  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

方法二:将数据帧分成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

结果是三个大小相等的数据帧。

方法三:根据列值分割数据框

下面的代码展示了如何根据特定列的值将一个数据框拆分为两个数据框:

 #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中的其他列将列添加到数据框

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注