【发布时间】:2019-08-27 20:56:39
【问题描述】:
根据给药途径,我有以下包含药物代码的数据框:
code <- data.frame(inn = c("ibuprofen", "ibuprofen", "ibuprofen", "fusidic acid", "fusidic acid"),
route = c("unknown", "unknown", "unknown", "oral", "topical"),
atc = c("R02AX02", "G02CC01", "M01AE01", "J01XC01", "D06AX01"))
inn route atc
1 ibuprofen unknown R02AX02
2 ibuprofen unknown G02CC01
3 ibuprofen unknown M01AE01
4 fusidic acid oral J01XC01
5 fusidic acid topical D06AX01
另一个包含患者治疗和事件:
event <- data.frame(id = c(1, 1, 2),
inn = c("ibuprofen", "fusidic acid", "fusidic acid"),
route = c("unknown", "oral", "topical"),
event = c(TRUE, FALSE, TRUE))
id inn route event
1 1 ibuprofen unknown TRUE
2 1 fusidic acid oral FALSE
3 2 fusidic acid topical TRUE
我需要合并这些数据框得到以下结果:
inn route id event atc
1 fusidic acid oral 1 FALSE J01XC01
2 fusidic acid topical 2 TRUE D06AX01
3 ibuprofen unknown 1 TRUE NA
我没有通过简单的merge 得到这个结果:
merge(x = event,
y = code)
inn route id event atc
1 fusidic acid oral 1 FALSE J01XC01
2 fusidic acid topical 2 TRUE D06AX01
3 ibuprofen unknown 1 TRUE R02AX02
4 ibuprofen unknown 1 TRUE G02CC01
5 ibuprofen unknown 1 TRUE M01AE01
我想到了两个解决方案,但我没有设法实施:
- 修改
merge之前的code数据框,如果atc一组inn和route有不同的atc,则将atc设置为NA(这似乎更合适)李> - 如果
inn、route和id一组有不同的atc,则修改merge的结果,将atc设置为NA
如何在基础 R 中做到这一点?还有其他更好的方法吗?我在一个限制性的环境中工作,我只能访问基础 R。
【问题讨论】:
标签: r merge duplicates unique na