r 中的惩罚累积和

问题描述

我需要计算一个受罚的累积总和。

个人“A”、“B”和“C”应该每隔一年接受一次测试。每次他们接受测试,他们都会累积 1 分。但是,当他们错过考试时,他们的累积分数会被扣除 1 分。

我有以下代码:

data.frame(year = rep(1990:1995,3),person.id = c(rep("A",6),rep("B",rep("C",6)),needs.testing = rep(c("Yes","No"),9),test.compliance = c(c(1,1,0),c(1,0)),penalized.compliance.cum.sum = c(c(1,2,3,1),-1,-1)))

...给出以下内容:

  year person.id needs.testing test.compliance penalized.compliance.cum.sum
1  1990         A           Yes               1                            1
2  1991         A            No               0                            1
3  1992         A           Yes               1                            2
4  1993         A            No               0                            2
5  1994         A           Yes               1                            3
6  1995         A            No               0                            3
7  1990         B           Yes               1                            1
8  1991         B            No               0                            1
9  1992         B           Yes               1                            2
10 1993         B            No               0                            2
11 1994         B           Yes               0                            1
12 1995         B            No               0                            1
13 1990         C           Yes               1                            1
14 1991         C            No               0                            1
15 1992         C           Yes               0                            0
16 1993         C            No               0                            0
17 1994         C           Yes               0                           -1
18 1995         C            No               0                           -1

很明显,“A”完全符合要求。 “B”有点符合(1994年他应该接受测试,但他错过了测试,因此他的累计金额从2减为1)。最后,“C”只符合了一次(1990 年,每次她需要接受测试,她都错过了测试)。

我需要一些代码来获取“penalized.compliance.cum.sum”变量。

请注意

  1. 每隔一年进行一次测试。
  2. “penalized.compliance.cum.sum”变量不断增加之前的分数。
  3. 但只有当个人错过测试年度的测试(在“needs.testing”变量中表示)时才会开始扣除。
  • 例如,个人“C”在 1990 年符合要求。在 1991 年她不需要接受测试,因此她的分数保持为 1。然后,她错过了 1992 年的测试,并且从她的累积分数中减去了 1 ,在 1992 年得了 0 分。然后她一直错过考试,在研究结束时得了 -1。
  • 此外,我需要分配不同的惩罚(即不同的数字)。在此示例中,它只是 1。但是,我需要能够使用其他数字(例如 0.5、0.1 等)进行惩罚。

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)