跟踪R中特定事件的数据框

用户98235

我有下表:

Name        Date       Score
John      11-01-02      40
John      11-01-03      47
John      11-01-04      41
John      11-01-05      35
John      11-01-06      52
John      11-01-07      47
John      11-01-08      45
John      11-01-09      43
John      11-01-10      40
Adam      11-01-02      41
Adam      11-01-03      41
Adam      11-01-04      49
Adam      11-01-05      40
Adam      11-01-06      40

我只想跟踪以下事件:对于每个学生,跟踪学生何时以及多少次出现以下情况:1)分数增加5或更多,然后分数减少5或更多或2)分数降低5分或更多,然后得分提高5分或更多。

我制作了下表来帮助完成上述任务:每个学生的分数之间的差异表。

Name        Date      Difference
John      11-01-03       7
John      11-01-04      -6
John      11-01-05      -6
John      11-01-06      17
John      11-01-07      -5
John      11-01-08      -2
John      11-01-09      -2
John      11-01-10      -3
Adam      11-01-04       8
Adam      11-01-05      -9
Adam      11-01-06       0

例如,在03年11月1日,约翰的得分从11年11月1日的40分上升到47分,因此相差47-40 = 7。

我想要下表作为输出:

记录事件的名称,日期的一种

Name        Dates for Events
John            11-01-03      
John            11-01-05
John            11-01-06
Adam            11-01-04

在03年1月1日,约翰经历了7分的变化,随后是-6分,因此约翰经历了我描述的事件。由于相同的原因,其他日期也包括在内。

在R中有一个简单的方法吗?任何帮助将不胜感激。

MKR

使用的一种选择dplyr可能是:

data %>% group_by(Name) %>%
  mutate(diff = lead(Score) - Score,
         score_increase_5 = ifelse(diff >= 5, TRUE, FALSE),
         score_decrease_5 = ifelse(diff <= -5, TRUE, FALSE)) %>%
  filter(!is.na(diff)) %>%
  mutate(event = ((score_decrease_5 & lag(score_increase_5)) |
  (score_increase_5 & lag(score_decrease_5)))) %>%
  filter(event) %>%
  select(Name, Date)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章