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
如何做到这一点?
答案 0 :(得分:8)
有什么想法吗?使用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
答案 1 :(得分:1)
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)
答案 2 :(得分:0)
现在可以通过dplyr管道和ggplot2::cut_number()
更方便地完成此操作。
library(dplyr)
library(ggplot2)
faithful %>%
mutate(Quartile = cut_number(eruptions, n = 4, labels = c("Q1", "Q2", "Q3", "Q4")))
默认情况下,与基数R cut()
不同,最低观察值包括在内。