根据第二列添加包含数字的列

时间:2017-02-11 11:17:55

标签: r dataframe numbers rows

这是我的data.frame:

df = read.table(text = 'Day  ID  Event
                        100   1     1
                        100   1     1
                         99   1     1
                         97   1     1
                         87   2     1
                         86   2     1
                         85   2     1
                        965   1     2
                        964   1     2
                        960   1     2
                        959   1     2
                        709   2     2
                        708   2     2
                         12   3     2
                          9   3     2', header = TRUE)

我想要做的是创建一个新列,考虑到IDEvent个列,根据相对Day为每个观察值分配一个递减顺序的数字的。

我想要的输出是:

                        Day  ID  Event  Count

                        100   1     1     4
                        100   1     1     4
                         99   1     1     3
                         97   1     1     1

                         87   2     1     3
                         86   2     1     2
                         85   2     1     1

                        965   1     2     7      
                        964   1     2     6
                        960   1     2     2
                        959   1     2     1

                        709   2     2     2
                        708   2     2     1

                         12   3     2     4  
                          9   3     2     1

E.g。如果你看看上面的第一个'块':第97天= 1,第98天= 2,第99天= 3和第100天= 4.我们缺少第98天,但我们仍然需要将它包含在计数中。

我尝试了以下但输出不是我需要的输出:

  

df $ Count< - ave(df $ Day,df $ Event,df $ ID,FUN = seq_along)

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

我们可以尝试

library(dplyr)
df %>%
    group_by(ID, Event) %>% 
    mutate(Count = 1+(Day-Day[n()]))