[R] Just another pattern matching / indexing question
Denis Kazakiewicz
d.kazakiewicz at gmail.com
Tue Feb 8 23:11:06 CET 2011
For the sake of simplicity I've made your data example
idd d1 d2 d3 d4
1 a d b c
2 a d v h
3 c b v NA
4 q v NA f
df <- read.table('clipboard', header = TRUE,na.strings="NA")
df
logVec <- apply(df[2:5],1,function(x)"a"%in%x) #find drug "a" from
example
df2 <- cbind(df,logVec)
df2
Good luck in your work :)
У Аўт, 08/02/2011 у 11:38 -0800, dunner піша:
> Hi all, thank you for your patience.
>
> I am dealing with a large dataset detailing patients and medications
>
> Medications are hard to code, as they are (usually) meaningless unless
> matched with doses.
>
> I have a dataframe with vectors (Drug1, Drug2..... Drug 16) and individual
> patients are represented by rows.
> The vectors are actually factors, with 100s of possible levels (all the
> drugs the patient could be on).
>
> All I want to do is produce a vector of logicals (TTTTFFFFTTT......) that I
> can cbind into the dataframe, that will tell me whether a patient is or is
> not on a particular, important drug.
>
> This i so I can use particularly important drugs' presence or absence as
> categorical covariates in a model.
>
> I've tried grep, to search along the rows, and I can generate a vector of
> identifiers, but I cannot seem to generate the vector of logicals.
>
> I realise I'm doing something simply wrong.
>
>
> names(drugindex)
> [1] "book.MRN" "DRUG1" "DRUG2" "DRUG3" "DRUG4" "DRUG5"
> [7] "DRUG6" "DRUG7" "DRUG8" "DRUG9" "DRUG10" "DRUG11"
> [13] "DRUG12" "DRUG13" "DRUG14" "DRUG15" "DRUG16"
>
> > truvec<-drugindex$book.MRN[as.vector(unlist(apply(drugindex[,2:17], 2,
> > grep, pattern="Lamotrigine")))]
> > truvec
> truvec
> [1] 0024633 0008291 0008469 0030599 0027667
> 37 Levels: 0008291 0008469 0010188 0014217 0014439 0015822 ... 0034262
>
> > head(drugindex)
> book.MRN DRUG1 DRUG2 DRUG3 DRUG4
> DRUG5
> 4 0008291 Venlafaxine Procyclidine Flunitrazepam Amisulpiride
> Clozapine
> 31 0008469 Venlafaxine Mirtazapine Lithium Olanzapine
> Metoprolol
> 3 0010188 Flurazepam Valproate Olanzapine Mirtazapine
> Esomeprazole
> 13 0014217 Aspirin Ramipril Zuclopenthixol Lorazepam
> Haloperidol
> 15 0014439 Zopiclone Diazepam Haloperidol Paracetamol
> <NA>
> 5 0015822 Olanzapine Venlafaxine Lithium Haloperidol
> Alprazolam
> DRUG6 DRUG7 DRUG8 DRUG9 DRUG10 DRUG11
> DRUG12
> 4 Lamotrigine Alprazolam Lithium Alprazolam <NA> <NA>
> <NA>
> 31 Lamotrigine Ramipril Alprazolam Zolpidem Trifluoperazine <NA>
> <NA>
> 3 Paracetamol Alprazolam Citalopram <NA> <NA> <NA>
> <NA>
> 13 <NA> <NA> <NA> <NA> <NA> <NA>
> <NA>
> 15 <NA> <NA> <NA> <NA> <NA> <NA>
> <NA>
> 5 <NA> <NA> <NA> <NA> <NA> <NA>
> <NA>
> DRUG13 DRUG14 DRUG15 DRUG16
> 4 <NA> <NA> <NA> <NA>
> 31 <NA> <NA> <NA> <NA>
> 3 <NA> <NA> <NA> <NA>
> 13 <NA> <NA> <NA> <NA>
> 15 <NA> <NA> <NA> <NA>
> 5 <NA> <NA> <NA> <NA>
>
> And what I want is a vector of logicals for each drug, saying whether that
> patient is on it
>
> Thank you all for your time.
>
> Ross Dunne MRCPsych
>
>
>
>
>
>
More information about the R-help
mailing list