r - 根据特定标准提取数据
问题描述
您好我必须根据某些标准提取数据,但我不知道该怎么做。我有患者住院过一次或多次。每个患者的日期顺序是按递增顺序完成的,即日期 1 在日期 2 之前,后者在日期 3 之前。住院次数没有顺序,只是随机的。诊断是按专业(器官系统)和疾病(在我的情况下是 ICD-10)编码的。即所有"A"
都是与器官系统相关的疾病(因此它们属于一个专业)。即使"A01"
和"A02"
是不同的疾病。
这是我的数据库的表示。
Patient_ID<-c(rep("A",4),rep("B",3),rep("C",2),rep("D",2),rep("E",6),rep("F",3),"G")
Stay_ID<-c(paste("A",1:4,sep=""),paste("B",1:3,sep=""),paste("C",1:2,sep=""),
paste("D",1:2,sep=""),paste("E",1:6,sep=""),paste("F",1:3,sep=""),"G2")
Date<-c(1,3,2,4,3,1,2,2,1,1,2,1,3,5,2,4,6,3,1,2,1)
Diagnosis<-c("A01","A01","A02","N01","C01","C01","Z72","E01","F56","A01","A01",
"B36","B36","B37","F13","F13","K12","A33","A33","B13","O24")
data<-data.frame(Patient_ID,Stay_ID,Date,Diagnosis)
print(data)
Patient_ID Stay_ID Date Diagnosis
1 A A1 1 A01
2 A A2 3 A01
3 A A3 2 A02
4 A A4 4 N01
5 B B1 3 C01
6 B B2 1 C01
7 B B3 2 Z72
8 C C1 2 E01
9 C C2 1 F56
10 D D1 1 A01
11 D D2 2 A01
12 E E1 1 B36
13 E E2 3 B36
14 E E3 5 B37
15 E E4 2 F13
16 E E5 4 F13
17 E E6 6 K12
18 F F1 3 A33
19 F F2 1 A33
20 F F3 2 B13
21 G G2 1 O24
我的目标是为每个患者提取每个专业的第一次访问。
例如,我必须在患者中仅提取日期1的"A"
诊断"A01"
(我删除了第二个"A01"
和,日期 2 的诊断(我放弃日期 4 的诊断)和诊断。对于患者,我提取了他唯一的诊断。"A02"
"N01"
"E"
"B36"
"B"
"B36"
"B37"
"F13"
"F13"
"K12"
"G"
解决方案
您可以将诊断列分成两部分,然后先提取字母。然后,您可以选择仅包含 Patient_ID 和 first_letter 的 df 上不重复的行。您可能需要按日期对数据进行排序,但我无法确定它是 Stay_ID 还是 Date。假设它是日期列:
# Sort by Patient_ID and Date
data <- data[order(data$Patient_ID, data$Date), ]
# Extract the first letter
data$first_letter <- substring(data$Diagnosis, 1, 1)
# Remove duplicates
data <- data[!duplicated(data[ ,c("Patient_ID", "first_letter")]), ]
data
Patient_ID Stay_ID Date Diagnosis first_letter
1 A A1 1 A01 A
4 A A4 4 N01 N
6 B B2 1 C01 C
7 B B3 2 Z72 Z
9 C C2 1 F56 F
8 C C1 2 E01 E
10 D D1 1 A01 A
12 E E1 1 B36 B
15 E E4 2 F13 F
17 E E6 6 K12 K
19 F F2 1 A33 A
20 F F3 2 B13 B
21 G G2 1 O24 O
推荐阅读
- python-3.x - 如何提取netcdf文件的日期?
- javascript - 将 .wav 加载到音频缓冲区
- node.js - 启动节点 js 应用程序后如何重新运行函数
- python - 使用破折号数据表和破折号引导模式时出现“太多递归错误”
- laravel - GraphQL Lighthouse 策略 user->can('view') 不工作
- flutter - 颤振:未处理的异常:键入“列表”
' 不是类型 'List 的子类型 ' - python - 如何在 python 虚拟环境中使用全局安装的 CV2(手动安装)包?
- java - 为什么Java最终变量不能在setter方法中赋值?
- mongodb - 我可以在 mongodb 中为 $or 查询编写索引吗?
- javascript - 监控由 WebAssembly 模块进行的系统调用