R 根据特定标准提取数据

R 根据特定标准提取数据,r,R,你好,我必须根据某些标准提取数据,但我不知道如何做。 我有过一次或多次住院的病人。每位患者的日期顺序是按递增顺序进行的,即日期1在日期2之前,日期2在日期3之前。 停留的次数没有顺序,只是随机的。 诊断是按专业(一个器官系统)和疾病(在我的案例中是ICD-10)编码的。 也就是说,所有的“A”都是与器官系统相关的疾病(因此它们属于一个专业)。尽管“A01”和“A02”是不同的疾病 这是我的数据库的一个表示 Patient_ID<-c(rep("A",4),rep("B",3),rep("C

你好,我必须根据某些标准提取数据,但我不知道如何做。 我有过一次或多次住院的病人。每位患者的日期顺序是按递增顺序进行的,即日期1在日期2之前,日期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

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)