Разделите набор данных в R на 3 подмножества: нижние 25%, средние 50% и верхние 25% - PullRequest
0 голосов
/ 12 декабря 2018

как я могу подразделить данные data.frame на три части на основе значений одного столбца?Я хочу показать форму кривой U, построив средства в различных подмножествах.Я уже понял, как получить случайное верхнее и нижнее значения, и как получить верхний х и нижний х процент .. (например, 25% / 50% / 25%)

low.x <- top_n(final_data, -100, final_data$variablex)
high.x <- top_n(final_data, 100, final_data$variablex)

ИЛИ (sth.как ... все еще дает мне неправильный вывод для low.x)

n <- 25
low.x <- subset(final_data, final_data$variablex < quantile(final_data$variablex, prob = 1 - n/100))
high.si <- subset(final_data, final_data$variablex > quantile(final_data$variablex, prob = 1 - n/100))

Но ... Как мне построить подмножества на основе нижних 25%, основных 50% и верхних 75%?

Спасибо!

1 Ответ

0 голосов
/ 12 декабря 2018

Создайте группирующую переменную g на основе квантилей quant, а затем разделите данные по ней.Входные данные не нужно сортировать.

x <- 1:12 # test data

quant <- quantile(x, c(0, .25, .75, 1))
g <- cut(x, quant, include.lowest = TRUE, lab = c("lo", "mid", "hi"))
split(x, g)

, что дает:

$`lo`
[1] 1 2 3

$mid
[1] 4 5 6 7 8 9

$hi
[1] 10 11 12

quantcut

Это можно сделать альтернативно в более компактной форме, используя quantcut из gtools.Это также делает более сложной обработку дубликатов.

library(gtools)

g <- quantcut(x, c(0, .25, .75, 1), lab = c("lo", "mid", "hi"))
split(x, g)
...