这里有一个简单的R问题,有点类似于this one,但我不知道如何从那里适应我的见识。
我有一个数据框,该数据框具有来自多家公司的相对质量排名,例如
Firm Quality
A 4
B 5
C 2
D 0
我想添加第三列,如果质量等于或高于第50个百分数(否则为0),第四列为1,如果质量等于或高于第75个百分数(否则为0)。类似于上面链接的解决方案,似乎依赖于cut()
和within()
;尽管它们是相对较旧的,但在dplyr之前,并且我想知道是否存在使用summarise()
和dplyr摘要函数的更好方法,以便以更直观的方式进行此操作(至少对于新手而言)。
答案 0 :(得分:3)
您可以做类似的事情
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
答案 1 :(得分:1)
Ronak的回答非常好,但是仅仅为了好玩,一个完整的dplyr
解决方案:
library(dplyr)
df %>%
mutate(Above50 = as.numeric(ntile(Quality, 2)==2),
Above75 = as.numeric(ntile(Quality, 4)==4))