R code to insert rows based on a column's value and increment it by 1

后端 未结 3 819
梦谈多话
梦谈多话 2021-01-26 05:08

I have two columns in my data as shown below. I want to insert rows based on the value in Total column. Eg. For record1, the total value is 9. So, there should be 9 records for

相关标签:
3条回答
  • 2021-01-26 05:46

    First make that data frame you expect beforehand, after that make your desired data frame:

    dat <- data.frame("Code"=c("XS1.1","W1.23","Kj1.9"),"Total"=c(9,3,2))
    dat2 <- data.frame("Code"=rep(dat[,1],dat[,2]),"Total"=c(seq(1:dat[1,2]),seq(1:dat[2,2]),seq(1:dat[3,2])))
    
    0 讨论(0)
  • 2021-01-26 05:50

    Another idea:

    library(tidyr)
    library(dplyr)
    
    df %>% 
      group_by(Code) %>%
      complete(Total = full_seq(1:Total, 1))
    

    Which gives:

    #Source: local data frame [14 x 2]
    #Groups: Code [3]
    # 
    #     Code Total
    #   <fctr> <dbl>
    #1   Kj1.9     1
    #2   Kj1.9     2
    #3   W1.23     1
    #4   W1.23     2
    #5   W1.23     3
    #6   XS1.1     1
    #7   XS1.1     2
    #8   XS1.1     3
    #9   XS1.1     4
    #10  XS1.1     5
    #11  XS1.1     6
    #12  XS1.1     7
    #13  XS1.1     8
    #14  XS1.1     9 
    
    0 讨论(0)
  • 2021-01-26 05:58
    library(data.table)
    setDT(df)[,.(Total=1:Total), code]
    

    Or base R:

    with(df, data.frame(code=rep(code, Total), Total=sequence(Total)))
    
    0 讨论(0)
提交回复
热议问题