首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按百分位数对数据进行分类

按百分位数对数据进行分类
EN

Stack Overflow用户
提问于 2014-11-23 01:51:31
回答 1查看 883关注 0票数 0

我有以下数据:

代码语言:javascript
复制
set.seed(15)
ddf <- data.frame(
    gp1 = sample(1:3, 200, replace=T), 
    gp2 = sample(c('a','b'), 200, replace=T), 
    param = sample(10:20, 200, replace=T) 
)
head(ddf)
  gp1 gp2 param
1   2   a    18
2   1   b    11
3   3   a    15
4   2   b    20
5   2   a    17
6   3   b    11

我必须创建另一个名为“类别”的列,如果该行的“param”大于gp1和gp2的75百分位数,该列的值需要为1。

我试着跟随,但我不确定这是否正确:

代码语言:javascript
复制
ddf$category = with(ddf, ifelse(param>quantile(ddf[ddf$gp1==gp1 & ddf$gp2==gp2,]$param, .75, na.rm=T), 1, 0)  )

以上代码是否正确,否则如何做到?谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-23 02:34:55

(将"value“改为”param“后)

代码语言:javascript
复制
ddf = data.frame(gp1, gp2, param)
ddf$category <- with(ddf, ave(param, gp1,gp2, 
                             FUN=function(x) x > quantile(x,.95) ) )
> ddf
    gp1 gp2 param category
1     2   a    20        0
2     2   a    16        0
3     1   a    12        0
4     1   b    16        0
5     3   b    19        0
 snipped

> sum(ddf$category)
[1] 2
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27084753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档