按值排列的数据框子集

问题描述:

STEST       TEST CRESULTC CRESULTS CUNIT SIRESULC SIRESULT SIUNIT VWEEK TYPE WKSLAB SILO SIHI CNLO 
1 TALT      ALT (SGPT)    85.0 IU/L    85 IU/L -1 1 -2.142857 0 55 0.0 
2 TAST      AST (SGOT)    74.0 IU/L    74 IU/L -1 1 -2.142857 0 40 0.0 
3 TALB      Albumin    4.3 g/dL    43 g/L -1 1 -2.142857 36 48 3.6 
4 TALP   Alkaline Phosphatase    45.0 IU/L    45 IU/L -1 1 -2.142857 25 160 25.0 
5 AMMB    Ammonium Biurate None Seen  NaN  NoneSeen  NaN   -1 1 -2.142857 NaN NaN NaN 
6 AMURPH Amorphous Urates or Phosphates None Seen  NaN  NoneSeen  NaN   -1 1 -2.142857 NaN NaN NaN 

假设我有这个数据框及其命名实验室。我想通过多个行值对它进行分组。例如,我只需要提取TEST值等于白蛋白或氨基酸铵的行。按值排列的数据框子集

D1 = subset(labs, labs$TEST == 'Albumin' & labs$TEST == 'Ammonium Biurate') 

然而,运行此代码后,我得到一个数据帧与0对象?如何适当地在R中通过多个行条件进行子集?

D1 = subset(labs, labs$TEST == 'Ammonium Biurate' | labs$TEST == 'Albumin') 

D1 = subset(labs, labs$TEST %in% c('Ammonium Biurate, Albumin) 

编辑:感谢您对%in%的建议。 ==的使用将在TEST列中仅搜索矢量的模式。

+0

尝试'%in%'而不是'==',即'子集(实验室,%c('白蛋白','氨基酸'))' – akrun

+0

似乎没有任何前导空格。 –

+0

我以为你是基于两列的子集。如果您只使用单个列,请在修改注释时尝试使用'%in%'。 – akrun

正如上面提到的akrun,您的子集声明与您提到的标准不符。

而是写

D1 = subset(labs, labs$TEST == 'Albumin' & labs$TEST == 'Ammonium Biurate') 

D1 = subset(labs, labs$TEST == 'Albumin' | labs$TEST == 'Ammonium Biurate') 

你的版本是一个合乎逻辑的AND,这是从来没有在你的情况属实,因为测试的值永远都在同一时间。逻辑OR更接近你寻找的东西,即它是白蛋白或氨基酸铵,而不是两者。注意:下次尝试提供一个易于重现的示例。立即就您的问题立即测试一个想法更简单。