具有非零观测子集的数据帧的R百分位数

具有非零观测子集的数据帧的R百分位数,r,quantile,tibble,R,Quantile,Tibble,我想计算以下tibble的百分位数 我有一个非零子集,3个变量中的每一个都有10个观测值,即 n <- 10 tibb <- tibble( x = 1:5, y = 1, z = x ^ 2 + y) n很接近,如果先使用“聚集”,然后按三个不同的因素对数据进行分组,那么创建平均值(以及随后的百分位数)的方法可能会更简单 library(dplyr) n <- 10 tibb <- tibble(x = 1:5, y = 1, z = x ^ 2 +

我想计算以下tibble的百分位数

我有一个非零子集,3个变量中的每一个都有10个观测值,即

n <- 10
tibb <- tibble(
  x = 1:5, 
  y = 1, 
  z = x ^ 2 + y)

n很接近,如果先使用“聚集”,然后按三个不同的因素对数据进行分组,那么创建平均值(以及随后的百分位数)的方法可能会更简单

library(dplyr)
n <- 10
tibb <- tibble(x = 1:5, y = 1, z = x ^ 2 + y)
tibb %>% 
  gather("fctr", "value") %>% 
  group_by(fctr) %>% 
  summarise(mean = sum(value) / n,
            perc_50 = quantile(value, 0.5),
            perc_75 = quantile(value, 0.75))
库(dplyr)
n%
分组依据(fctr)%>%
总结(平均值=总和(值)/n,
perc_50=分位数(值0.5),
perc_75=分位数(值,0.75))
但是,我不确定您是想要非零子集的百分位还是整个数据集,因为这将改变您的结果,即

> x = 1:5
> quantile(x, 0.1)
10% 
1.4 

> test <- c(0,0,0,0,0,1,2,3,4,5)
> quantile(test, 0.1)  
10% 
  0 
>x=1:5
>分位数(x,0.1)
10% 
1.4
>测试分位数(测试,0.1)
10% 
0

很接近,如果先使用“聚集”,然后按三个不同的因素对数据进行分组,那么创建平均值(以及随后的百分位数)的方法可能会更简单

library(dplyr)
n <- 10
tibb <- tibble(x = 1:5, y = 1, z = x ^ 2 + y)
tibb %>% 
  gather("fctr", "value") %>% 
  group_by(fctr) %>% 
  summarise(mean = sum(value) / n,
            perc_50 = quantile(value, 0.5),
            perc_75 = quantile(value, 0.75))
库(dplyr)
n%
分组依据(fctr)%>%
总结(平均值=总和(值)/n,
perc_50=分位数(值0.5),
perc_75=分位数(值,0.75))
但是,我不确定您是想要非零子集的百分位还是整个数据集,因为这将改变您的结果,即

> x = 1:5
> quantile(x, 0.1)
10% 
1.4 

> test <- c(0,0,0,0,0,1,2,3,4,5)
> quantile(test, 0.1)  
10% 
  0 
>x=1:5
>分位数(x,0.1)
10% 
1.4
>测试分位数(测试,0.1)
10% 
0

您可以创建包含零的数据集


missingRowCount您可以创建一个包含零的数据集


missingRowCount谢谢@Joe Stoica,这很有帮助。。。我在寻找整个数据集的百分位数;后者calculation@VincentRisington这将更难适应单个管道,因此使用上面的管道仅用于平均值,然后为百分位数创建另一个管道可能更简单。我也不知道您的原始数据是如何组织的,因此,如果您只是过滤等于0的值,您可以在管道中使用该数据,而不是过滤后的数据。然后,您可以将两个TIBLE输出合并为一个;实际数据集有数百万行,大多数值都是零,需要删除这些值才能高效地处理Tanks@Joe Stoica,这很有帮助。。。我在寻找整个数据集的百分位数;后者calculation@VincentRisington这将更难适应单个管道,因此使用上面的管道仅用于平均值,然后为百分位数创建另一个管道可能更简单。我也不知道您的原始数据是如何组织的,因此,如果您只是过滤等于0的值,您可以在管道中使用该数据,而不是过滤后的数据。然后,您可以将两个TIBLE输出合并为一个;实际的数据集有数百万行,大多数值都是零,需要删除这些值才能有效地进行处理参见
?汇总所有
,最后您可以按物种%>%找到汇总所有(funs(Q3=分位数),probs=0.75)
。在您的案例中,您可以尝试
tibb%>%总结所有(funs(Q3=分位数,Q2=分位数),probs=0.75,probs=0.5)
参见
?总结所有
最后您可以找到
按物种%>%总结所有(funs(Q3=分位数),probs=0.75)
。在您的情况下,您可以尝试
tibb%>%summary\u all(funs(Q3=分位数,Q2=分位数),probs=0.75,probs=0.5)