我有一个包含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。
如何做到最好?
谢谢!
答案 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个分位数,则可以在函数中包含这些单个值。