首页 > 解决方案 > 如何为前四分位数(或其他分位数)中的值创建虚拟变量

问题描述

这里有一个简单的 R 问题,与这个问题有点相似,但我不知道如何将那里的见解应用到我的环境中。

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

Firm    Quality
  A        4
  B        5
  C        2
  D        0

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

标签: rdplyr

解决方案


你可以做类似的事情

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

推荐阅读