Применение квантильных ведер к строкам - PullRequest
0 голосов
/ 10 декабря 2018

Моя цель - установить квантили для данного столбца, а затем назначить каждой строке соответствующий интервал на основе этих квинтилей.

Определить данные квинтиля достаточно просто:

quantile(df$x, probs=seq(0,1,0.2),na.rm = TRUE)

Но я немного растерялся относительно того, как назначить эту информацию каждой строке, используя функции вместо ручного хеширования.Я играл с apply и tapply, но до сих пор не дошел.Нечто подобное приводит к тому, что по существу та же информация, что и выше, но ссылается на конкретные UID и дополнительные столбцы в разбивке по категориям:

apply(df, 2, quantile, probs = c(0.2, 0.4, 0.6, 0.8, 1.0), na.rm = TRUE)

1 Ответ

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

Если я понимаю, что вы имеете в виду, используя данные образца радужной оболочки:

q <- quantile(iris$Sepal.Length, probs=seq(0,1,0.2),na.rm = TRUE)

получает квинтили.Тогда вы могли бы использовать cut, чтобы назначить наблюдения сегментам.

iris$qc <- cut(iris$Sepal.Length, q)
table(iris$qc)

Дает вам

    (4.3,5]    (5,5.6]  (5.6,6.1] (6.1,6.52] (6.52,7.9] 
         31         33         30         25         30

Что, я думаю, то, что вы хотите.Вы можете изменить имена, если хотите, а также поиграть с опциями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...