我正在尝试编写一些代码来分析我公司的保险计划产品......但它们很复杂!PPO 计划很简单,但高免赔额健康计划很复杂,因为他们为家庭计划引入了“拆分”免赔额和自付费用最高限额(个人和总计)。它是这样工作的:
- 一旦个人达到个人免赔额,他/她将获得 90% 的保障
- 一旦计划中剩余的 1+ 个人达到总免赔额,整个家庭将获得 90% 的保障
- 个人仅靠医疗费用无法满足家庭免赔额
我想为我的家庭成员(其中有四个)输入一个费用向量,并输出每个计划的总成本。下表列出了可能的情况,并带有以下列代码:
ded_ind
: 一个人是否达到了个人免赔额?ded_tot
: 总免赔额达到了吗?oop_ind
: 个人自掏腰包是否达到最大值oop_tot
: 是否达到了自付费用的最大值?exp_ind
= 最高支出者的支出exp_rem
=其余/other/家庭成员的支出(不是最高支出者)oop_max_ind
= 个人支付最高自付费用的费用水平(当个人自付费用最高时ded_ind + 0.1 * exp_ind =
)oop_max_fam
= 与个人相同,但针对其余家庭成员
桌子:
| ded_ind | oop_ind | ded_rem | oop_rem | formula
|---------+---------+---------+---------+---------------------------------------------------------------------------|
| 0 | 0 | 0 | 0 | exp_ind + exp_rem |
| 1 | 0 | 0 | 0 | ded_ind + 0.1 * (exp_ind - ded_ind) + exp_rem |
| 0 | 0 | 1 | 0 | exp_ind + ded_rem + 0.1 * (exp_rem - ded_rem) |
| 1 | 1 | 0 | 0 | oop_max_ind + exp_fam |
| 1 | 0 | 1 | 0 | ded_ind + 0.1 * (exp_ind - ded_ind) + ded_rem + 0.1 * (exp_rem - ded_rem) |
| 0 | 0 | 1 | 1 | oop_max_rem + exp_ind |
| 1 | 0 | 1 | 1 | ded_ind + 0.1 * (exp_ind - ded_ind) + oop_max_rem |
| 1 | 1 | 1 | 0 | oop_ind_max + ded_rem + 0.1 * (exp_rem - ded_rem) |
| 1 | 1 | 1 | 1 | oop_ind_max + oop_rem_max |
省略: 0 1 0 0
、0 0 0 1
、0 1 1 0
、 和0 1 0 1
不存在,因为如果oop_ind
和分别没有满足,则无法满足。oop_rem
ded_ind
ded_rem
我当前的代码是一个有点ifelse
像这样的大循环(不是代码,而是它的作用):
check if plan is ppo or hsa
if hsa plan
if exp_ind + exp_rem < ded_rem # didn't meet family deductible
if exp_ind < ded_ind # individual deductible also not met
cost = exp_ind + exp_rem
else is exp_ind > oop_ind_max # ded_ind met, is oop_ind?
ded_ind + 0.1 * (exp_ind - ded_ind) + exp_fam # didn't reach oop_max_ind
else oop_max_ind + exp_fam # reached oop_max_ind
else ...
在else之后,总和大于家庭免赔额。我检查它是否由两个以上的人贡献,然后继续这样。
我的问题,既然我已经给出了问题的一些背景知识:有没有比ifelse
循环一次过滤它们更好的方法来管理这样的条件情况?
代码最终看起来是多余的,因为一个检查一些更高级别的条件(考虑ded_rem
满足或不满足的表......在这两种情况下仍然需要检查ded_ind
和oop_max_ind
代码是相同的......只是定位在ifelse
结构中的两个不同位置)。
这可以通过某种矩阵运算来完成吗?网上还有其他更聪明的方法来处理条件过滤的例子吗?
非常感谢您的任何建议。
PS 我正在使用 R 并将创建一个交互,shiny
以便其他员工可以为他们的每个家庭成员输入最佳和最坏的情况,并通过点或条形图查看哪个计划提前出现。