r-基于列值复制数据帧中的行



我正试图根据列的值来复制行。我的数据帧(df(当前看起来像:

物种名称 访问次数
Apis m 4
Bombus l 7

更新(如uncount所述(:

使用您的代码:

df.expanded <- df[rep(row.names(df), df$Visits), 1:2]

或者:您可以将sliceseq_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(

相关内容

最新更新