R选择数据范围

时间:2016-08-25 17:18:03

标签: r dataframe range

我有一个包含10行和3列的数据集。例如:

A <- c(5.0, 10.0, 15.5, 20, 22, 25, 30, 
           40, 50, 60)

B <- c(1, 20, 30, 6, 7, 10, 2, 27, 
       3, 10)

Date <- c("1997-05-01","1997-05-02","1997-05-03","1997-05-04","1997-05-05",
          "1997-05-06","1997-05-07","1997-05-08","1997-05-09","1997-05-10")
data <- data.frame(A, B, Date)

因此,我在R中有一个数据表:

  A      B     date
----    ----    ----
5.0      1     1997-05-01
10.0     20    1997-05-02
etc...

范围基于分位数。对于&#34; A&#34;我想要&lt;或者=分数25(例如16.625),B代表&gt;或= =分位数75(例如17.50)

quantile(data$A, c(.25, .50, .75))

quantile(data$B, c(.25, .50, .75))

因此,我希望获得具有A和B的确切值范围内的值的所有行并创建新数据,例如:

新数据将是:

  A      B     date
----    ----    ----
10.0    20     1997-05-02
15.5    30     1997-05-03
etc... 

我希望新数据配对数据,而不是随机创建列A和B。

如何做到最好?

谢谢!

1 个答案:

答案 0 :(得分:0)

一种方法是在这两个条件下过滤数据框:

data[data$A <= quantile(data$A, 0.25) &
     data$B >= quantile(data$B, 0.75), ]

     A  B       Date
2 10.0 20 1997-05-02
3 15.5 30 1997-05-03

quantile函数会创建您为数据指定的任何分位数的向量。如果您只关心第25或第75个分位数,则可以在函数中包含这些单个值。