【问题标题】:how to create a dummy variable for value in top quartile (or other quantile)如何为前四分位数(或其他分位数)中的值创建虚拟变量
【发布时间】:2018-10-16 02:35:39
【问题描述】:

这里是简单的 R 问题,有点类似于 this one,但我不知道如何将那里的见解应用到我的设置中。

我有一个数据框,其中包含几家公司的相对质量排名,例如

Firm    Quality
  A        4
  B        5
  C        2
  D        0

我想添加第三列,如果质量等于或高于第 50 个百分位,则为 1(否则为 0),如果质量等于或高于第 75 个百分位,则添加第四列为 1(否则为 0)。像上面链接的解决方案似乎依赖于cut()within();虽然它们相对较旧,但在 dplyr 之前,我想知道是否有一种好方法可以使用 summarise() 和 dplyr 摘要函数以更直观的方式执行此操作(至少对于这个新手来说)。

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    你可以这样做

    library(dplyr)
    df %>%
      mutate(Above50 = as.numeric(Quality >= quantile(Quality, 0.5)), 
             Above75 = as.numeric(Quality >= quantile(Quality, 0.75)))
    
    
    #  Firm Quality Above50 Above75
    #1    A       4       1       0
    #2    B       5       1       1
    #3    C       2       0       0
    #4    D       0       0       0
    

    【讨论】:

      【解决方案2】:

      Ronak 的回答非常好,但只是为了好玩,完全是dplyr 解决方案:

      library(dplyr)
      df %>%
        mutate(Above50 = as.numeric(ntile(Quality, 2)==2), 
               Above75 = as.numeric(ntile(Quality, 4)==4))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-10-06
        • 2021-07-25
        • 2014-12-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-28
        • 1970-01-01
        相关资源
        最近更新 更多