当列中的值在R中具有不连续的数字时填充行

myss37ts  于 2023-07-31  发布在  其他
关注(0)|答案(1)|浏览(95)

我想填写非连续数字的行。以下是我的样本数据:

data.frame(Var1 = c("A","A","B","B","B","C","C","D"),
           Number = c(10,11,120,123,124,50,52,30),
           Var2 = c(letters[1:8]))

  Var1 Number Var2
1    A     10    a
2    A     11    b
3    B    120    c
4    B    123    d
5    B    124    e
6    C     50    f
7    C     52    g
8    D     30    h

字符串
Number不连续时,例如第4行和第7行,我想在第3行和第4行以及第6行和第7行之间添加两行,并使用上述值。我想要的输出看起来像这样:

Var1 Number Var2
1     A     10    a
2     A     11    b
3     B    120    c
4     B    121    c
5     B    122    c
6     B    123    d
7     B    124    e
8     C     50    f
9     C     51    f
10    C     52    g
11    D     30    h


提前感谢!!

axr492tv

axr492tv1#

您可以使用complete() + fill()tidyr

library(dplyr)
library(tidyr)

df %>%
  group_by(Var1) %>%
  complete(Number = full_seq(Number, 1)) %>%
  fill(Var2) %>%
  ungroup()

# # A tibble: 11 × 3
#    Var1  Number Var2 
#    <chr>  <dbl> <chr>
#  1 A         10 a    
#  2 A         11 b    
#  3 B        120 c    
#  4 B        121 c    
#  5 B        122 c    
#  6 B        123 d    
#  7 B        124 e    
#  8 C         50 f    
#  9 C         51 f    
# 10 C         52 g    
# 11 D         30 h

字符串

相关问题