ранжирование квантилей по нескольким столбцам фрейма данных и изменение результатов - PullRequest
0 голосов
/ 03 июля 2018

У меня есть фрейм данных, который выглядит следующим образом:

    AA   BB  CC   DD
aa  2.6 -0.3 2.5 2.3
bb -0.3  1.2 2.1 0.8
cc  0.5 -0.4 0.4 0.4

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

     AA   BB  CC   DD quantile
 aa  2.6 -0.3 2.5 2.3        4
 bb -0.3  1.2 2.1 0.8        1
 cc  0.5 -0.4 0.4 0.4        2

Но я бы хотел изменить квантиль всех столбцов сразу после соответствующего столбца. Кто-нибудь есть какие-либо идеи, как я могу сделать это в r с пакетом dplyr с функциями квантили и мутации?

Спасибо!

1 Ответ

0 голосов
/ 04 июля 2018

Вы можете попробовать использовать dplyr::mutate_all для применения quantile, а затем cut для всех столбцов как:

library(dplyr)

df %>% mutate_all(funs(quant = 
                       as.integer(cut(., quantile(.), include.lowest = TRUE))))

#     AA   BB  CC  DD AA_quant BB_quant CC_quant DD_quant
# 1  2.6 -0.3 2.5 2.3        4        2        4        4
# 2 -0.3  1.2 2.1 0.8        1        4        2        2
# 3  0.5 -0.4 0.4 0.4        2        1        1        1

Данные:

df <- read.table(text="
AA   BB  CC   DD
aa  2.6 -0.3 2.5 2.3
bb -0.3  1.2 2.1 0.8
cc  0.5 -0.4 0.4 0.4",
header = TRUE)
...