通过向量增加行数
Increase number of rows by vector
我有这个数据框:
df <- data.frame(
ID = 1:5,
Subject = c("A","A","B","B","C"),
Duration = c(3,2,2,4,5)
)
任务很简单:我需要通过列 Duration
中的向量增加行数。也就是说,例如,第 1 行中的 Duration
是 3;所以这一行应该一式三份。第 2 行的持续时间为 2;所以这一行应该被复制,等等。如何做到这一点?
预计:
ID Subject Duration
1 1 A 3
2 1 A 3
3 1 A 3
4 2 A 2
5 2 A 2
6 3 B 2
7 3 B 2
8 4 B 4
9 4 B 4
10 4 B 4
11 4 B 4
12 5 C 5
13 5 C 5
14 5 C 5
15 5 C 5
16 5 C 5
我很感激任何解决方案,尤其是 dplyr
解决方案。
您需要的功能是tidyr::uncount
。
library(tidyr)
uncount(df, Duration, .remove = F)
ID Subject Duration
1 1 A 3
2 1 A 3
3 1 A 3
4 2 A 2
5 2 A 2
6 3 B 2
7 3 B 2
8 4 B 4
9 4 B 4
10 4 B 4
11 4 B 4
12 5 C 5
13 5 C 5
14 5 C 5
15 5 C 5
16 5 C 5
我们可以使用 slice
:
library(dplyr)
df %>%
slice(rep(row_number(), Duration))
ID Subject Duration
1 1 A 3
2 1 A 3
3 1 A 3
4 2 A 2
5 2 A 2
6 3 B 2
7 3 B 2
8 4 B 4
9 4 B 4
10 4 B 4
11 4 B 4
12 5 C 5
13 5 C 5
14 5 C 5
15 5 C 5
16 5 C 5
我有这个数据框:
df <- data.frame(
ID = 1:5,
Subject = c("A","A","B","B","C"),
Duration = c(3,2,2,4,5)
)
任务很简单:我需要通过列 Duration
中的向量增加行数。也就是说,例如,第 1 行中的 Duration
是 3;所以这一行应该一式三份。第 2 行的持续时间为 2;所以这一行应该被复制,等等。如何做到这一点?
预计:
ID Subject Duration
1 1 A 3
2 1 A 3
3 1 A 3
4 2 A 2
5 2 A 2
6 3 B 2
7 3 B 2
8 4 B 4
9 4 B 4
10 4 B 4
11 4 B 4
12 5 C 5
13 5 C 5
14 5 C 5
15 5 C 5
16 5 C 5
我很感激任何解决方案,尤其是 dplyr
解决方案。
您需要的功能是tidyr::uncount
。
library(tidyr)
uncount(df, Duration, .remove = F)
ID Subject Duration
1 1 A 3
2 1 A 3
3 1 A 3
4 2 A 2
5 2 A 2
6 3 B 2
7 3 B 2
8 4 B 4
9 4 B 4
10 4 B 4
11 4 B 4
12 5 C 5
13 5 C 5
14 5 C 5
15 5 C 5
16 5 C 5
我们可以使用 slice
:
library(dplyr)
df %>%
slice(rep(row_number(), Duration))
ID Subject Duration
1 1 A 3
2 1 A 3
3 1 A 3
4 2 A 2
5 2 A 2
6 3 B 2
7 3 B 2
8 4 B 4
9 4 B 4
10 4 B 4
11 4 B 4
12 5 C 5
13 5 C 5
14 5 C 5
15 5 C 5
16 5 C 5