根据列值插入特定的 N 个空白行

mar*_*lib 6 r dataframe dplyr

我有一个如下所示的数据框:

> df <- data.frame(x = c(1,0,2,0,1,3,1),
+                  y = c("lima","chicago","new york","Miami","havana","Colon","la paz"))
> df
  x        y
1 1     lima
2 0  chicago
3 2 new york
4 0    Miami
5 1   havana
6 3    Colon
7 1   la paz
Run Code Online (Sandbox Code Playgroud)

我想找到一种根据列的值插入空白N行的方法x ,因此如果x是1,将在上面插入1个空白行,如果x是3,将在上面插入3个空白行。上面的数据框所需的输出应该是这样的:

> df
    x        y
1  NA     <NA>
2   1     lima
3   0  chicago
4  NA     <NA>
5  NA     <NA>
6   2 new york
7   0    Miami
8  NA     <NA>
9   1   havana
10 NA     <NA>
11 NA     <NA>
12 NA     <NA>
13  3    Colon
14 NA     <NA>
15  1   la paz
Run Code Online (Sandbox Code Playgroud)

Tar*_*Jae 4

我们可以这样做:我们按行号分组并向每行号添加 x + 1 行。使用一个技巧,我们可以展示 NA 的第一个:

library(dplyr)

df %>% 
  group_by(ID = row_number()) %>% 
  summarise(cur_data()[seq(x+1),]) %>% 
  arrange(!is.na(x), x, .by_group = TRUE) %>% 
  ungroup() %>% 
  select(-ID)
Run Code Online (Sandbox Code Playgroud)
       x y       
   <dbl> <chr>   
 1    NA NA      
 2     1 lima    
 3     0 chicago 
 4    NA NA      
 5    NA NA      
 6     2 new york
 7     0 Miami   
 8    NA NA      
 9     1 havana  
10    NA NA      
11    NA NA      
12    NA NA      
13     3 Colon   
14    NA NA      
15     1 la paz  
Run Code Online (Sandbox Code Playgroud)