如何在 r 中复制数据框中的行


您可以使用以下方法通过dplyr包中的函数复制 R 中数据框中的行:

方法 1:将每行复制相同的次数

 library (dplyr)

#replicate each row 3 times
df %>% slice(rep(1:n(), each = 3))

方法 2:将每行复制不同的次数

 library (dplyr)

#replicate the first row 3 times and the second row 5 times
df %>% slice(rep(1:n(), times = c(3, 5)))

以下示例展示了如何在实践中使用每种方法。

示例 1:将每行复制相同的次数

假设我们在 R 中有以下包含两行的数据框:

 #create data frame
df <- data. frame (team=c('A', 'B'),
                 dots=c(10, 15),
                 rebounds=c(4, 8),
                 assists=c(2, 5))

#view data frame
df

  team points rebound assists
1 to 10 4 2
2 B 15 8 5

我们可以使用以下语法将数据帧的每一行重复三次:

 library (dplyr)

#create new data frame that repeats each row in original data frame 3 times
new_df <- df %>% slice(rep(1:n(), each = 3))

#view new data frame
new_df

  team points rebound assists
1 to 10 4 2
2 to 10 4 2
3 to 10 4 2
4 B 15 8 5
5 B 15 8 5
6 B 15 8 5

请注意,原始数据帧中的每一行都重复了 3 次。

示例 2:将每行复制不同的次数

假设我们在 R 中有以下包含两行的数据框:

 #create data frame
df <- data. frame (team=c('A', 'B'),
                 dots=c(10, 15),
                 rebounds=c(4, 8),
                 assists=c(2, 5))

#view data frame
df

  team points rebound assists
1 to 10 4 2
2 B 15 8 5

我们可以使用以下语法将第一行重复三次,第二行重复五次:

 library (dplyr)

#create new data frame that repeats first row 3 times and second row 5 times
new_df <- df %>% slice(rep(1:n(), times = c(3, 5)))

#view new data frame
new_df

  team points rebound assists
1 to 10 4 2
2 to 10 4 2
3 to 10 4 2
4 B 15 8 5
5 B 15 8 5
6 B 15 8 5
7 B 15 8 5
8 B 15 8 5

请注意,原始数据帧的第一行重复了 3 次,第二行重复了 5 次。

相关:如何在 dplyr 中使用 slice() 函数

其他资源

以下教程解释了如何在 dplyr 中执行其他常见操作:

如何使用 dplyr 按索引选择列
如何使用 dplyr 按组选择第一行
如何使用 dplyr 按多个条件进行过滤
如何使用 dplyr 过滤包含特定字符串的行

添加评论

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