5
q <- quantile(faithful$eruptions)
> q
     0%     25%     50%     75%    100% 
1.60000 2.16275 4.00000 4.45425 5.10000 

我得到以下结果,数据集是在 R 中提供的。

 head(faithful)
  eruptions waiting
1     3.600      79
2     1.800      54
3     3.333      74
4     2.283      62
5     4.533      85
6     2.883      55

我想要一个包含数据的数据框和一个用于指出每个观测值所属的分位数的附加列。例如,最终数据集应如下所示

     eruptions waiting Quartile
1     3.600      79      Q1
2     1.800      54      Q2
3     3.333      74
4     2.283      62
5     4.533      85
6     2.883      55

如何才能做到这一点?

4

3 回答 3

9

类似的东西?使用quantile函数中的值作为值来切割所需的向量。

faithful$kva <- cut(faithful$eruptions, q)
levels(faithful$kva) <- c("Q1", "Q2", "Q3", "Q4")
faithful

    eruptions waiting  kva
1       3.600      79   Q2
2       1.800      54   Q1
3       3.333      74   Q2
4       2.283      62   Q2
5       4.533      85   Q4
于 2014-02-25T09:36:32.430 回答
3

cut 函数可以选择立即为每个分位数创建数字标签:

faithful$Quartile <- cut(faithful$eruptions,
                         quantile(faithful$eruptions),
                         labels = FALSE)

这将为最小的喷发创建一个 NA,如果您想将最低的喷发分配给第一个分位数,您可以include.lowest = TRUE在调用cut函数时添加:

faithful$Quartile <- cut(faithful$eruptions,
                         quantile(faithful$eruptions),
                         labels = FALSE,
                         include.lowest = T)
于 2018-07-08T11:55:39.357 回答
2

现在可以通过 dplyr 管道和ggplot2::cut_number().

library(dplyr)
library(ggplot2)

faithful %>% 
   mutate(Quartile = cut_number(eruptions, n = 4, labels = c("Q1", "Q2", "Q3", "Q4")))

与基数 R 不同,默认情况下包含最低观测值cut()

于 2019-09-05T09:40:43.963 回答