R:来自矩阵的子集,只有那些在某列中具有特定值的行

mEv*_*ans 2 loops r subset which

对于一组诊断代码,我有一个超过2个月的急诊科访问的大矩阵"dt".列是"年龄","性别","日期","县","拉链","主观","位置","诊断"和"dt"; 尺寸为872344×9.

我想从这个矩阵中进行子集化,并创建一个新的矩阵,其中只包含"diag"列的数字介于800和849(所有列)之间的那些行.

我一直在搞乱构建一个循环并使用"which"或"if.else",但我遇到了一个心理障碍.看起来如果它只是一个我想要提取的诊断代码会更容易,但50个代码的系列使事情变得复杂......指向一个循环?有没有人有基于找到某些值的子集的想法?

这是我的开始(它不起作用):

dta = dt
b = 800:849
for (i in 1:length(b)) {

}
Run Code Online (Sandbox Code Playgroud)

Dav*_*son 6

dta = dt[dt[, 8] >= 800 & dt[, 8] <= 849, ]
Run Code Online (Sandbox Code Playgroud)

ETA:你确定这是一个矩阵而不是data.frame吗?如果是data.frame,您可以:

dta = dt[dt$diag >= 800 & dt$diag <= 849, ]
Run Code Online (Sandbox Code Playgroud)


flo*_*del 5

鉴于你的列名,我怀疑你dt是一个data.frame,而不是一个矩阵; 你可以通过跑步确认的东西is.data.frame(dt).

如果是这种情况,过滤数据的简便方法是使用以下subset函数:

dta <- subset(dt, diag >= 800 & diag <= 849)
Run Code Online (Sandbox Code Playgroud)