【问题标题】:quantile ranking on multiple columns of a data frame and mutate the results对数据框的多列进行分位数排名并改变结果
【发布时间】:2018-12-12 05:36:19
【问题描述】:

我有一个如下所示的数据框:

    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 包来执行此操作?

谢谢!

【问题讨论】:

    标签: r dataframe quantile dplyr


    【解决方案1】:

    您可以尝试使用dplyr::mutate_allquantile 然后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)
    

    【讨论】:

    • 以防万一需要对列的子集进行操作,请尝试mutate_at
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-31
    • 1970-01-01
    • 1970-01-01
    • 2020-04-23
    • 2019-10-13
    • 1970-01-01
    相关资源
    最近更新 更多