我有一个很大的问题,在我的数据框中,我有高血压的人,但不使用药物,然而使用药物的人却有“正常”的血压。
为此,我创建了一份包含巴西高血压指南所有药物的清单。它起作用了,但我在使用抗高血压药物和NA值的人中产生了NA值,因为我没有使用药物,因此如果我使用完整的药物,我会排除健康人和病人。
在这里,我从SPSS文件中导入数据,其中包含人们在问卷中报告的药物
library(memisc)
setwd("C:/Users/Rafael/Documents/RStudio")
Med<- as.data.set(spss.system.file("medicamentos_fase4a_pro_saude.sav"))
Med <- Med[c(2,5)]
Med <- as.data.frame(Med)
names(Med)[names(Med) == 'quest'] <- 'Quest'
View(Med)
药物清单
ListedMeds <- c("diuréticos", "carvedilol", "olmesartana", "tiazídicos", "clortalidona", "hidroclorotiazida", "indapamida", "bumetamida", "furosemida", "piretanida", "amilorida ", "espironolactona", "triantereno ", "antihipertensivo", "alfametildopa", "clonidina", "guanabenzo", "moxonidina", "doxazosina", "prazosina",...)
for(m in ListedMeds){ Med = Med[ !grepl(m, Med$med_rec), ] }
library(plyr) #### I use plyr because in the dataframe people that reported more than 1 medication was duplicated, so there were 1 row for each medication from the same person
Med <- ddply(Med, .(Quest), summarize, Rem = paste (med_rec, collapse = ", "))
将Med,DF与药物和问卷数量以及我的DF与血压结果合并。
DFPA <- merge (DFPA, Med, by = "Quest", all = TRUE)
DFPA <- subset(DFPA, select = c(Quest, PASM, PADM, PAM, PP, CCor, CGI, Sexo, FEtária, HAS))
排除NA值:
DFPA <- DFPA[complete.cases(DFPA), ]
DFPA <- subset(DFPA, select = c(Quest,PASM, PADM, PAM, PP, CCor, CGI, Sexo, FEtária, HAS))`
我知道我最终没有做任何事情,因为我排除了所有有NA的人,而且可能是健康或生病的人。所以我想知道如何排除所有符合所列药物的人。
ps:列表“ListedMeds”包含来自人们的药物,他们说他们经常使用某些药物。所以,在这个队列中我有4000人,我根据一些参数排除了一些人,导致2854人。当我将Meds与DFPA合并时,该数字变为3011,但是很多这些人只在Rem栏中有信息,在其他栏目中是NA。
ps2:是否有可能为那些被DFPA排除的人创建一个新的数据框,因为他们说他们使用抗高血压药物?因为我认为我可以解决问题,但超过1000人被排除在外,但我认为这个数字是错误的。
` str(DFPA)
'data.frame': 2854 obs. of 11 variables:
$ Quest : Factor w/ 3041 levels "0001","0002",..: 1 2 3 4 5 6 7 8 10 11 ...
$ PASM : num 116 128 107 112 103 122 112 99 123 120 ...
$ PADM : num 64 86 58 73 69 84 72 62 73 77 ...
$ PAM : num 81 100 74 86 80 97 85 74 90 91 ...
$ PP : num 52 42 49 39 34 38 40 37 50 43 ...
$ Age : num 60 52 53 47 44 61 54 54 33 55 ...
$ Color : Factor w/ 3 levels "B","P","PD": 1 1 1 3 3 1 3 1 1 3 ...
$ Educ : Factor w/ 3 levels "1º","2º","3º": 2 3 3 3 3 2 3 2 2 2 ...
$ Sex : Factor w/ 2 levels "F","M": 1 1 1 2 2 1 1 2 2 1 ...
$ FEtária: Ord.factor w/ 4 levels "A"<"B"<"C"<"D": 4 3 3 3 2 4 3 3 1 3 ...
$ HAS : Ord.factor w/ 4 levels "N"<"P"<"H1"<"H2": 1 2 1 1 1 2 1 1 2 2 ... `
` > str(Med)
List of 2
$ Quest: chr [1:2189] "2" "3" "4" "5" ...
$ Rem : chr [1:2189] "cloreto de sódio, dimenidrato, escopolamina,
fitoterápico, omeprazol, ramipril+anlodipino, sertralina" "colágeno,
dipirona, vitamina e suplemento mineral" "homeopatia" "vitamina e suplemento
mineral" ...
`
示例:
> mysample
Quest PASM PADM PAM PP Age Color Educ Sex FEtária HAS
133 0133 130 84 99 46 56 PD 1º M C P
1641 1685 146 84 105 62 57 PD 1º M C H1
482 0483 122 78 93 44 64 P 2º F D P
2260 2305 118 78 91 40 54 P 3º F C N
1140 1184 114 70 85 44 63 B 2º M D N
1527 1571 168 98 121 70 56 P 2º M C H2
941 0983 116 73 87 43 65 PD 2º M D N
506 0507 134 90 105 44 60 B 3º M D P
2676 2722 100 60 73 40 50 B 3º M C N
326 0327 106 78 87 28 66 P 2º F D N