r - 如何根据字典更改或替换行名
问题描述
我想根据提供的ICD-10代码字典,将ICD-10代码连续更改为疾病名称。
这是初始数据
id <- c("1","2","3")
Dx1 <- c("E119", "I251","I20")
Dx2 <- c("I20", "I251","E119")
Dx3 <- c("I251", "E119","I20")
df <- data.frame(id,Dx1,Dx2,Dx3)
df
这是 ICD-10 代码字典,在这个例子中有 3 个代码,但实际上,ICD-10 代码包含 94000 个代码。
ICD <- c("I251", "E119","I20")
Disease <- c("Acute Myocard Infarct", "Type 2 Diabetes", "Chest Pain")
CodeDictionary <- data.frame(ICD,Disease)
CodeDictionary
这是我的目标
id <- c("1","2","3")
Dx1 <- c("Type 2 Diabetes", "Acute Myocard Infarct","Chest Pain")
Dx2 <- c("Chest Pain", "Acute Myocard Infarct","Type 2 Diabetes")
Dx3 <- c("Acute Myocard Infarct", "Type 2 Diabetes","I20")
dfGoal <- data.frame(id,Dx1,Dx2,Dx3)
dfGoal
我尝试了 dplyr 的内部连接,但它没有用。谢谢您的帮助!
解决方案
我认为inner_join
是正确的方向。在此之前,虽然你会想要使用pivot_longer
,然后一旦你有了疾病名称,你就可以使用它pivot_wider
来获取你的 dfGoal:
library(tidyverse)
id <- c("1","2","3")
Dx1 <- c("E119", "I251","I20")
Dx2 <- c("I20", "I251","E119")
Dx3 <- c("I251", "E119","I20")
df <- data.frame(id,Dx1,Dx2,Dx3)
df
ICD <- c("I251", "E119","I20")
Disease <- c("Acute Myocard Infarct", "Type 2 Diabetes", "Chest Pain")
CodeDictionary <- data.frame(ICD,Disease)
CodeDictionary
id <- c("1","2","3")
Dx1 <- c("Type 2 Diabetes", "Acute Myocard Infarct","Chest Pain")
Dx2 <- c("Chest Pain", "Acute Myocard Infarct","Type 2 Diabetes")
Dx3 <- c("Acute Myocard Infarct", "Type 2 Diabetes","I20")
dfGoal <- data.frame(id,Dx1,Dx2,Dx3)
dfGoal
df_goal <- df %>%
pivot_longer(-id, names_to = "diagnoses", values_to = "ICD") %>%
inner_join(CodeDictionary, by = "ICD") %>%
select(id, diagnoses, Disease) %>%
pivot_wider(names_from = diagnoses, values_from = Disease)
希望这可以帮助!
推荐阅读
- java - 是否可以防止 WebView 或任何 View 被破坏?
- sql-server - 替换 CustomerID 字段中的单个数字 SQL Server
- c++ - 找到重叠和下采样散点图
- python - 有没有办法用 PyQt5 捕捉按钮上的悬停事件信号?
- android - 在Android中设置密码时如何在锁定屏幕上显示活动
- python - 处理列表时如何在火花中找到字符串中的索引?
- javascript - useEffect:状态更新后不渲染
- scala - 将使用访问者的 Traversable 迁移到 Scala 2.13 中的 Iterable
- c# - System.Xml.XmlException '根级别的数据无效,第 1 行,位置 1' 当我从 1 xml 文件更改为 5 时出现错误
- docker - Logstash 输出到 ssl elasticsearch