如何在不使用循环的情况下计算R中的中间区间百分等级?

用户名

我有一组具有不同组的数据-在这个示例中,我们仅说两组-我想计算一个中间间隔的百分位等级,但是我想使用dplyr(所以没有循环)。

以下是数据以及到目前为止的内容:

library(dplyr);
group<-c("A","A","A","A","A","A","A","A","A","A","A","B","B","B","B","B","B","B","B","B","B","B")
score<-c(1,2,3,4,5,6,7,8,9,10,10,9,10,7,8,4,5,10,11,12,13,10)
my_orig_df<-data.frame(group,score)
mydf<-my_orig_df %.%
  group_by(group) %.%
  mutate (   Cum= round( cume_dist(score),2) , myPTILE=percent_rank(score)) 
mydf

明确地说,我希望组的第一个值A是.05,而不是.09或0。尽管结果接近,但它们并不是我所期望的。

我可以通过嵌套循环获得所需的结果(但这不是我想要的):

 Ugroup<-unique (group)
for (i in 1:length(Ugroup)) {
  temp<-subset(mydf,group==Ugroup[i]) 
  for(j in 1:length(temp$score)) {
    ptile<-c(ptile,    ((sum(temp$score==temp$score[j])/2)+sum(temp$score<temp$score[j]))   /length(temp$score))
  } }

当我使用带有多个组的大型数据集的循环(上面)运行代码时,时间成为问题。

我已经尝试了以下方法:row_number(score); ntile(score, 99); min_rank(score); dense_rank(score); percent_rank(score); cume_dist(score)但是没有得到我想要的结果。任何想法,将不胜感激。

耶洛华德

这似乎产生与循环相同的结果。dplyr虽然不使用...

f <- function(z) sapply(z,function(x) (sum(z==x)/2+sum(z<x))/length(z))
ptile <- as.vector(t(aggregate(score~group,my_orig_df,f)[,-1]))
ptile
#  [1] 0.04545455 0.13636364 0.22727273 0.31818182 0.40909091 0.50000000 0.59090909
#  [8] 0.68181818 0.77272727 0.90909091 0.90909091 0.40909091 0.59090909 0.22727273
# [15] 0.31818182 0.04545455 0.13636364 0.59090909 0.77272727 0.86363636 0.95454545
# [22] 0.59090909

这是一个可能更快的data.table解决方案。

library(data.table)
DT <- as.data.table(my_orig_df)
ptile.dt <- DT[,sapply(score,function(x)(sum(score==x)/2+sum(score<x))/.N),by=group]$V1

identical(ptile,ptile.dt)
# [1] TRUE

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在不使用循环的情况下计算R中的中间区间百分等级?

来自分类Dev

有效地计算R中的百分等级

来自分类Dev

有效地计算R中的百分等级

来自分类Dev

熊猫在各组中的百分等级

来自分类Dev

计算沿轴的多维数组中的值的百分等级

来自分类Dev

熊猫滚动窗百分等级

来自分类Dev

根据总体计算一组分数的百分等级

来自分类Dev

在Python中计算数据框中每一列的最后一个元素的百分等级

来自分类Dev

如何在不使用百分比 (%) 的情况下确定弹性项目的大小?

来自分类Dev

在不使用任何扩展名的情况下,如何在GNOME面板中显示电池百分比?

来自分类Dev

如何在不使用变换的情况下按自身的百分比缩小图像:scale()

来自分类Dev

如何在不使用百分比的情况下自动在div之间添加间距?

来自分类Dev

如何在不使用百分比的情况下自动在div之间添加间距?

来自分类Dev

如何在不使用clojurescript中的事件循环的情况下运行较长的计算?

来自分类Dev

如何在不使用for循环的情况下计算图像中像素强度的出现次数?

来自分类Dev

在不使用AutoPostBack的情况下,基于两个文本框值计算标签中的百分比

来自分类Dev

如何在没有随机数的情况下使用百分比?

来自分类Dev

在不使用循环的情况下计算列表中的时间

来自分类Dev

在不使用循环的情况下计算列表中的时间

来自分类Dev

如何在不使用PHP的循环的情况下计算多维数组的元素数?

来自分类Dev

如何在不使用for循环的情况下计算此公式

来自分类Dev

如何在不使用类的情况下反转Python中的优先级队列?

来自分类Dev

如何在不使用循环的情况下多次打印?

来自分类Dev

如何在给定情况下分配重量百分比

来自分类Dev

使用dplyr :: percent_rank()计算组内的百分位等级

来自分类Dev

如何在R中不使用嵌套循环的情况下引用2个不同的数据帧

来自分类Dev

在SAS中,有没有一种方法可以在不存储循环值的情况下计算百分位数?

来自分类Dev

如何在不使用 len() 的情况下使用累积模式计算代码中的字符数?

来自分类Dev

如何在不使用数组的情况下计算C中的相同字符

Related 相关文章

  1. 1

    如何在不使用循环的情况下计算R中的中间区间百分等级?

  2. 2

    有效地计算R中的百分等级

  3. 3

    有效地计算R中的百分等级

  4. 4

    熊猫在各组中的百分等级

  5. 5

    计算沿轴的多维数组中的值的百分等级

  6. 6

    熊猫滚动窗百分等级

  7. 7

    根据总体计算一组分数的百分等级

  8. 8

    在Python中计算数据框中每一列的最后一个元素的百分等级

  9. 9

    如何在不使用百分比 (%) 的情况下确定弹性项目的大小?

  10. 10

    在不使用任何扩展名的情况下,如何在GNOME面板中显示电池百分比?

  11. 11

    如何在不使用变换的情况下按自身的百分比缩小图像:scale()

  12. 12

    如何在不使用百分比的情况下自动在div之间添加间距?

  13. 13

    如何在不使用百分比的情况下自动在div之间添加间距?

  14. 14

    如何在不使用clojurescript中的事件循环的情况下运行较长的计算?

  15. 15

    如何在不使用for循环的情况下计算图像中像素强度的出现次数?

  16. 16

    在不使用AutoPostBack的情况下,基于两个文本框值计算标签中的百分比

  17. 17

    如何在没有随机数的情况下使用百分比?

  18. 18

    在不使用循环的情况下计算列表中的时间

  19. 19

    在不使用循环的情况下计算列表中的时间

  20. 20

    如何在不使用PHP的循环的情况下计算多维数组的元素数?

  21. 21

    如何在不使用for循环的情况下计算此公式

  22. 22

    如何在不使用类的情况下反转Python中的优先级队列?

  23. 23

    如何在不使用循环的情况下多次打印?

  24. 24

    如何在给定情况下分配重量百分比

  25. 25

    使用dplyr :: percent_rank()计算组内的百分位等级

  26. 26

    如何在R中不使用嵌套循环的情况下引用2个不同的数据帧

  27. 27

    在SAS中,有没有一种方法可以在不存储循环值的情况下计算百分位数?

  28. 28

    如何在不使用 len() 的情况下使用累积模式计算代码中的字符数?

  29. 29

    如何在不使用数组的情况下计算C中的相同字符

热门标签

归档