Home > Mobile >  How to make the next number in a column a sequence in r
How to make the next number in a column a sequence in r

Time:10-07

sorry to bother everyone. I have been stuck with coding

Student   Number 
1            NA
1            NA
1             1
1             1
2            NA
2             1
2             1
2             1
3            NA
3            NA
3             1
3             1

I tried using dplyr to cluster by students try to find a way so that every time it reads that 1, it adds it to the following column so it would read as

Student   Number 
1            NA
1            NA
1             1
1             2
2            NA
2             1
2             2
2             3
3            NA
3            NA
3             1
3             2

etc

Thank you! It'd help with attendance.

CodePudding user response:

Try using cumsum, note that cumsum itself cannot ignore NA

library(dplyr)

df %>%
  group_by(Student) %>%
  mutate(n = cumsum(ifelse(is.na(Number), 0, Number))   0 * Number)

   Student Number     n
     <int>  <int> <dbl>
 1       1     NA    NA
 2       1     NA    NA
 3       1      1     1
 4       1      1     2
 5       2     NA    NA
 6       2      1     1
 7       2      1     2
 8       2      1     3
 9       3     NA    NA
10       3     NA    NA
11       3      1     1
12       3      1     2

CodePudding user response:

data.table solution;

library(data.table)

setDT(df)

df[!is.na(Number),Number:=cumsum(Number),by=Student]

df


   Student Number
     <int>  <int>
 1       1     NA
 2       1     NA
 3       1      1
 4       1      2
 5       2     NA
 6       2      1
 7       2      2
 8       2      3
 9       3     NA
10       3     NA
11       3      1
12       3      2
  • Related