我有一个如下所示的数据框:
> 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)
我们可以这样做:我们按行号分组并向每行号添加 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)
归档时间: |
|
查看次数: |
66 次 |
最近记录: |