这是我的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)
我想要做的是创建一个新列,考虑到ID
和Event
个列,根据相对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)
感谢您的帮助
答案 0 :(得分:0)
我们可以尝试
library(dplyr)
df %>%
group_by(ID, Event) %>%
mutate(Count = 1+(Day-Day[n()]))