选择基于grepl的行会在R中产生多个列

时间:2017-10-14 21:06:15

标签: r subset sapply grepl

我有这样的数据(df),每位患者有50个诊断代码(dx.1到dx.50):

ID     dx.1     dx.2    dx.50
 1   150200   140650   250400
 2   752802   851812       NA
 3   441402   450220       NA
 4   853406   853200   150404
 5   250604       NA       NA

我想选择具有以" 250"开头的任何诊断代码的行。所以在这个例子中,它将是ID 1和5.

经过一段时间的磕磕绊绊之后,我终于想出了这个:

df$select = rowSums(sapply(df[,2:ncol(df)], function(x) grepl("\\<250", x)))
selected = df[df$select>0,]

它有点铮铮,需要一段时间,因为我在几千行上运行它。

  1. 有更好/更快的方法吗?
  2. 有一种简单的方法可以将其扩展到多个搜索条件吗?

0 个答案:

没有答案