取消分组数据框 - R
Ungrouping data frame - R
我有以下DF:
df <- data.frame(Type = c("A", "A", "B"),
Day = c(1, 1, 1),
Hour = c(1,2,1),
Amount = c(2,3,2))
Type Day Hour Amount
A 1 1 2
A 1 2 3
B 1 1 2
并希望最终得到一个行数等于 Amount 总和的 DF,如下所示:
Type Day Hour
A 1 1
A 1 1
A 1 2
A 1 2
A 1 2
B 1 1
B 1 1
事实上“只是”一个解组。但是我一直在尝试找到一个可以做到这一点的功能,但找不到任何东西。 dplyr里面有,但是必须在第一组之后用。
您需要包 tidyr
中的 uncount()
函数。
library(tidyverse)
df %>% uncount(Amount)
Type Day Hour
1 A 1 1
2 A 1 1
3 A 1 2
4 A 1 2
5 A 1 2
6 B 1 1
7 B 1 1
将 base R
与 rep
结合使用
df[rep(seq_len(nrow(df)), df$Amount),]
我有以下DF:
df <- data.frame(Type = c("A", "A", "B"),
Day = c(1, 1, 1),
Hour = c(1,2,1),
Amount = c(2,3,2))
Type Day Hour Amount
A 1 1 2
A 1 2 3
B 1 1 2
并希望最终得到一个行数等于 Amount 总和的 DF,如下所示:
Type Day Hour
A 1 1
A 1 1
A 1 2
A 1 2
A 1 2
B 1 1
B 1 1
事实上“只是”一个解组。但是我一直在尝试找到一个可以做到这一点的功能,但找不到任何东西。 dplyr里面有,但是必须在第一组之后用。
您需要包 tidyr
中的 uncount()
函数。
library(tidyverse)
df %>% uncount(Amount)
Type Day Hour
1 A 1 1
2 A 1 1
3 A 1 2
4 A 1 2
5 A 1 2
6 B 1 1
7 B 1 1
将 base R
与 rep
df[rep(seq_len(nrow(df)), df$Amount),]