我有这样的数据(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,]
它有点铮铮,需要一段时间,因为我在几千行上运行它。