排除与字符列表匹配的行

时间:2017-04-06 00:18:23

标签: r

我有一个很大的问题,在我的数据框中,我有高血压的人,但不使用药物,然而使用药物的人却有“正常”的血压。

为此,我创建了一份包含巴西高血压指南所有药物的清单。它起作用了,但我在使用抗高血压药物和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

0 个答案:

没有答案