如何选择高度尺寸和两个因子水平?

时间:2015-06-09 18:03:39

标签: r r-factor

我想选择高度大小间隔(Commentheight >0.50),并且在同一高度内只有两个模式级别(例如:height < 1.00norm)大小间隔。 例如:

esti

2 个答案:

答案 0 :(得分:2)

[我看到@akrun在评论中添加了相同的解决方案,因为我正在写这个]

你想要,

n

给出了

subdf <- subset(yourdf, subset = (height >0.50 & height < 1.00) & 
                                 pattern %in% c("norm","esti"))

如果要删除因子集而不再存在的因子级别,

> subdf
       sp diameter height breaking pattern
9  actcon     0.90   0.53      yes    norm
10 actcon     0.55   0.54       no    norm
11 actcon     0.65   0.54       no    norm
13 actcon     0.85   0.93       no    norm
14 actcon     1.20   0.94       no    norm
16 actcon     0.90   0.94       no    norm
17 actcon     2.10   0.94      yes    norm
18 actcon     1.00   0.95       no    norm
19 actcon     0.90   0.95       no    norm
20 actcon     0.80   0.95       no    norm
21 actcon     1.00   0.95       no    norm
22 actcon     1.05   0.96       no    norm
23 actcon     1.00   0.96       no    norm

然后你可以做

> str(subdf)
'data.frame':   13 obs. of  5 variables:
 $ sp      : Factor w/ 1 level "actcon": 1 1 1 1 1 1 1 1 1 1 ...
 $ diameter: num  0.9 0.55 0.65 0.85 1.2 0.9 2.1 1 0.9 0.8 ...
 $ height  : num  0.53 0.54 0.54 0.93 0.94 0.94 0.94 0.95 0.95 0.95 ...
 $ breaking: Factor w/ 2 levels "no","yes": 2 1 1 1 1 1 2 1 1 1 ...
 $ pattern : Factor w/ 4 levels "curv","deit",..: 4 4 4 4 4 4 4 4 4 4 ...

但根据你未来的实际问题,这可能不是正确的事。

答案 1 :(得分:1)

您也可以下载“dplyr”软件包,并使用或运算符|来使用过滤器功能。通常使用dplyr可以更简单地清理数据。

install.packages("dplyr")
library(dplyr)
filter(subdf, height>.5|height<1,pattern=="norm"|pattern=="esti")

此代码将subdf指定为数据框,表示高度可以大于5或小于1,其中模式可以是“norm”或“esti”。如果您想继续使用此子集,则必须将其分配给其他内容。这不会改变您的原始数据。