如何将组扩展到最大组的长度:

df <- structure(list(ID = c(1L, 1L, 2L, 3L, 3L, 3L), col1 = c("A", 
"B", "O", "U", "L", "R")), class = "data.frame", row.names = c(NA, 
-6L))


ID col1
1 A
1 B
2 O
3 U
3 L
3 R

帖子主题:Re:Колибри

1 A
1 B
NA NA
2 O
NA NA
NA NA
3 U
3 L
3 R

推荐答案

您可以利用df[n_bigger_than_nrow,]等于NA这一事实

dplyr

max_n <- max(count(df, ID)$n)

df %>% 
  group_by(ID) %>% 
  summarise(cur_data()[seq(max_n),])
#> `summarise()` has grouped output by 'ID'. You can override using the `.groups`
#> argument.
#> # A tibble: 9 × 2
#> # Groups:   ID [3]
#>      ID col1 
#>   <int> <chr>
#> 1     1 A    
#> 2     1 B    
#> 3     1 <NA> 
#> 4     2 O    
#> 5     2 <NA> 
#> 6     2 <NA> 
#> 7     3 U    
#> 8     3 L    
#> 9     3 R

base R

n <- tapply(df$ID, df$ID, length)
max_n <- max(n)
i <- c(sapply(n, \(x) c(seq(x), rep(Inf, max_n - x))))
i <- i + rep(c(0, cumsum(head(n, -1))), each = max_n)
df <- df[i,]
rownames(df) <- NULL
df$ID <- Reduce(\(x, y) if (is.na(y) && !is.na(x)) x else y, df$ID, accumulate = TRUE)

df
#>   ID col1
#> 1  1    A
#> 2  1    B
#> 3  1 <NA>
#> 4  2    O
#> 5  2 <NA>
#> 6  2 <NA>
#> 7  3    U
#> 8  3    L
#> 9  3    R

R相关问答推荐

将Multilinetring合并到一个线串中,使用sf生成规则间隔的点

过滤矩阵以获得R中的唯一组合

使用R中的gt对R中的html rmarkdown文件进行条件格式设置表的单元格

从有序数据中随机抽样

根据R中两个变量的两个条件删除带有dspirr的行

隐藏e_mark_line的工具提示

在R中使用download. file().奇怪的URL?

制作等距离的线串副本

为什么当用osmdata映射R时会得到相邻状态?

如何编辑gMarginal背景以匹配绘图背景?

在rpart. plot或fancyRpartPlot中使用带有下标的希腊字母作为标签?

如何写商,水平线,在一个单元格的表在R

按时间顺序对不同事件进行分组

根据另一列中的值和条件查找新列的值

如何在R中使用混合GAM模型只对固定的影响因素进行适当的预测?

为什么函数toTitleCase不能处理english(1),而toupper可以?

R-如何在ggplot2中显示具有不同x轴值(日期)的多行?

R:改进实现简单模型

真实世界坐标的逆st_变换

如何修改Rust中的R字符串并将其赋给新的R变量,并使用extendr保留原始R字符串