我正在尝试根据事件的值创建4个计数器,包括事件前和事件后。这是数据示例:
pre_counter_A pre_counter_BC event post_counter_A post counter_BC
0 0 A 1 0
1 0 B 0 1
1 1 C 0 2
1 2 A 2 2
1 2 D 0 0
如您所见,事件A发生时,我想将计数器A加1。当事件B或C发生时,我想将计数器BC加1。
我使用了“链接”一词,因为在Excel中,我只是使用if公式创建用于增加A和BC的post_counters的逻辑,然后将pre_counters滞后以便它们等于上一个中的适当post_counter行。
我尝试在R中使用ifelse语句,但不确定如何同时增加pre_counter和post_counters。
df$post_counter_A <- with(df, ifelse(event == A, pre_counter_A + 1,
lag(pre_counter_A))
df$post_counter_BC <- with(df, ifelse(event == B, pre_counter_BC + 1,
ifelse(event == C, pre_counter_BC + 1,
lag(pre_counter_BC)))
上面的代码显示了一些ifelse逻辑,但是如何更新pre_counter列,以便在整个数据帧中正确更新值。
该逻辑的另一个变体是,我想对计数器设置一个限制,以便一旦达到某个特定值(例如, 5个或特定事件,例如如上表的最后一行所示,发生D。
感谢您的帮助。