[R] search across a row for strings

Federman, Douglas Douglas.Federman at utoledo.edu
Mon Jun 15 22:12:50 CEST 2015


I'm trying to do the following: search each patient's list of diagnoses for a specific code then create a new column based upon the the presence of the specific code.  
Simplified data follows:

con <- textConnection("
ID	DX1	DX2	DX3
1	4109	4280	7102
2	734	311	490
3	4011	42822	4101
")
df <- read.table(con, header = TRUE, strip.white = TRUE, colClasses="character")
#
# I would like to add a column such the result of searching for 410 would give:  The search string would always be at the start of a word and doesn't need regex.
#
# ID	DX1	DX2	DX3	htn
# 1	4109	4280	7102	1
# 2	734	311	490	0
# 3	4011	42822	4101	1
#
# The following  works but is slow and returns NA if the search string is not found:

for (i in 1:nrow(df)) {
    df[i,"htn"] <- any(sapply('410', function(x)  which( grepl(x, df[i, 2:4], fixed = TRUE) )))
}

Thanks in advance.  I never fail to learn new things from this list.

--
Who is wise? One who learns from every person.
Who is strong? One who overpowers his evil inclinations.
Who is rich? One who is satisfied with his lot.
Who is honorable? One who honors his fellows.
- Pirkei Avot [excerpt]



More information about the R-help mailing list