我正试图根据列的值来复制行。我的数据帧(df(当前看起来像:
物种名称 | 访问次数 |
---|---|
Apis m | 4 |
Bombus l | 7 |
更新(如uncount
所述(:
使用您的代码:
df.expanded <- df[rep(row.names(df), df$Visits), 1:2]
或者:您可以将slice
与seq_len(n())
一起使用
library(dplyr)
df %>%
slice(rep(seq_len(n()), Visits)) %>%
select(-Visits)
输出:
Species.name
<chr>
1 Apis m
2 Apis m
3 Apis m
4 Apis m
5 Bombus l
6 Bombus l
7 Bombus l
8 Bombus l
9 Bombus l
10 Bombus l
11 Bombus l
您可以从tidyr/tidyverse包中尝试uncount
library(tidyr)
data <- data.frame(Species = c("Apis m","Nimbus"),Visits = c(4,7))
data %>%
uncount(Visits)
#> Species
#> 1 Apis m
#> 1.1 Apis m
#> 1.2 Apis m
#> 1.3 Apis m
#> 2 Nimbus
#> 2.1 Nimbus
#> 2.2 Nimbus
#> 2.3 Nimbus
#> 2.4 Nimbus
#> 2.5 Nimbus
#> 2.6 Nimbus
创建于2021-04-25由reprex包(v2.0.0(