R 根据特定标准提取数据
你好,我必须根据某些标准提取数据,但我不知道如何做。 我有过一次或多次住院的病人。每位患者的日期顺序是按递增顺序进行的,即日期1在日期2之前,日期2在日期3之前。 停留的次数没有顺序,只是随机的。 诊断是按专业(一个器官系统)和疾病(在我的案例中是ICD-10)编码的。 也就是说,所有的R 根据特定标准提取数据,r,R,你好,我必须根据某些标准提取数据,但我不知道如何做。 我有过一次或多次住院的病人。每位患者的日期顺序是按递增顺序进行的,即日期1在日期2之前,日期2在日期3之前。 停留的次数没有顺序,只是随机的。 诊断是按专业(一个器官系统)和疾病(在我的案例中是ICD-10)编码的。 也就是说,所有的“A”都是与器官系统相关的疾病(因此它们属于一个专业)。尽管“A01”和“A02”是不同的疾病 这是我的数据库的一个表示 Patient_ID<-c(rep("A",4),rep("B",3),rep("C
“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
Patient_ID您可以将诊断列分为两部分,然后首先提取字母。然后,您可以选择df上不重复的行,这些行仅由患者ID和第一个字母组成。您可能需要按日期对数据进行排序,但我无法确定它是停留ID还是日期。假设它是日期列:
# 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
#按患者ID和日期排序
数据我正要就data[order(data$Date),]
的必要性发表评论,但看起来你自己也看到了。@Ragip Gürlek日期是“Date”列,而不是stay_ID。stay_ID只是给停留加上一个数字,我认为这真的不必要here@Ragip居莱克,使用dplyr更容易,我参考了您的代码来编写那些似乎带来相同答案的代码。但为了谨慎起见,我更愿意征求一位编程技能更强的人的意见<代码>数据2%排列(患者ID,日期)%%>%变异(第一个字母=substr(诊断,1,1))%%>%不同(患者ID,第一个字母,.keep_all=T)