根据列/条件的组合添加或减去数字
我想调整HDL
,ldl
和trig
,通过根据虚拟变量列的组合添加或减去常数。常数为:
MED | HDL | LDL | TRIG |
---|---|---|---|
MED1 | -3.5 | 34.5 | 20.1 |
MED2 | -6.3 | 24.7 | 0 |
MED3 | -5 | 42.3 | 12 |
MED4 | 0 | 23 | 0 22 22 |
22 MED4 | 22 | 22 | 22.2 |
具体而言,规则是:
- 当一个人只服用一种药物/减去相应的常数。例如,对于ID#12,谁只服用Med5:
- adj_hdl =原始HDL -2.1
- AXD_LDL =原始LDL + 12
- AXP_TRIG =原始Trig + 22.2
- 当一个人服用超过1种药物时,调整后的HDL/LDL/TRIG将是使用最大的绝对值使用常数添加/取消。
例如,对于ID#1,他/她正在服用Med2,Med3和Med5。然后,他/她的调整后的脂质将是:
- adj_hdl =原始HDL -6.3(因为在Med2,3,5中,Med2在HDL的所有Meds中具有最大的绝对值)
- ADJ_LDL =原始LDL + 42.3
- AXP_TRIG =原始Trig = Original Trig + Original Trig + Original Trig + 22.2
因此,最终产品将是一个具有附加3列的数据集,adj_hdl
,adj_ldl
和adj> AXP_TRIG
for to ever of vor aff code> aidk_hdl 。
模拟数据集:
set.seed(100)
id = 1:100
hdl = rnorm(100, mean = 50, sd = 3)
ldl = rnorm(100, mean = 120, sd = 10)
trig = rnorm(100, mean = 150, sd = 12)
med1 = rbinom(100, size = 1, prob = 0.4)
med2 = rbinom(100, size = 1, prob = 0.6)
med3 = rbinom(100, size = 1, prob = 0.55)
med4 = rbinom(100, size = 1, prob = 0.45)
med5 = rbinom(100, size = 1, prob = 0.72)
data = cbind(id, hdl, ldl, trig, med1, med2, med3, med4, med5)
I would like to adjust hdl
, ldl
, and trig
by adding or subtracting a constant based on the combination of the dummy variable columns. The constants are:
med | hdl | ldl | trig |
---|---|---|---|
med1 | -3.5 | 34.5 | 20.1 |
med2 | -6.3 | 24.7 | 0 |
med3 | -5 | 42.3 | 12 |
med4 | 0 | 23 | 22 |
med5 | -2.1 | 12 | 22.2 |
Specifically, the rules are:
- When a person is only taking one 1 medication, then add/subtract the corresponding constant. For example, For ID#12 who's only taking med5:
- Adj_hdl = original hdl - 2.1
- Adj_ldl = original ldl + 12
- Adj_trig = original trig + 22.2
- When a person is taking more than 1 medication, the the adjusted hdl/ldl/trig would be added/substracted using the constant with the largest absolute value .
For example, for ID #1, he/she's taking med2, med3, and med5. Then his/her adjusted lipids would be:
- Adj_hdl = original hdl - 6.3 (since among med2,3,5, med2 has the constant with the largest absolute value across all meds for hdl)
- Adj_ldl = original ldl + 42.3
- Adj_trig = original trig + 22.2
As such, the end product would be a data set with additional 3 columns, adj_hdl
, adj_ldl
, and adj_trig
for each of the IDs.
Mock data set:
set.seed(100)
id = 1:100
hdl = rnorm(100, mean = 50, sd = 3)
ldl = rnorm(100, mean = 120, sd = 10)
trig = rnorm(100, mean = 150, sd = 12)
med1 = rbinom(100, size = 1, prob = 0.4)
med2 = rbinom(100, size = 1, prob = 0.6)
med3 = rbinom(100, size = 1, prob = 0.55)
med4 = rbinom(100, size = 1, prob = 0.45)
med5 = rbinom(100, size = 1, prob = 0.72)
data = cbind(id, hdl, ldl, trig, med1, med2, med3, med4, med5)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这很混乱,但我相信它可以起作用。
修订 (添加了ifelse而不是第二突变)
It's messy but I believe it works.
Revised (added ifelse instead of second mutate)