R 如何获得tibble中每个前5%步骤的平均值?
例如:R 如何获得tibble中每个前5%步骤的平均值?,r,dplyr,tidyverse,tibble,R,Dplyr,Tidyverse,Tibble,例如: data <- mtcars %>% select(wt, mpg, disp) 需要一个更整洁的解决方案,可能不使用for 您可以使用cut定义哪些行属于disp的5%频带: mtcars%>% 选择(重量、mpg、显示)%>% 变异(dispcut=cut(disp,c(-Inf,分位数(disp,seq(0,1,len=21))[-1]),labels=FALSE))%>% 分组依据(显示)%>% 总结所有(~mean() ##tibble:17 x 4 #显示wt
data <- mtcars %>% select(wt, mpg, disp)
需要一个更整洁的解决方案,可能不使用for
您可以使用
cut
定义哪些行属于disp
的5%频带:
mtcars%>%
选择(重量、mpg、显示)%>%
变异(dispcut=cut(disp,c(-Inf,分位数(disp,seq(0,1,len=21))[-1]),labels=FALSE))%>%
分组依据(显示)%>%
总结所有(~mean()
##tibble:17 x 4
#显示wt mpg显示
#
# 1 1 1.72 32.2 73.4
# 2 2 2.07 29.8 78.8
# 3 3 1.51 30.4 95.1
# 4 4 2.39 22.2 114.
# 5 5 2.14 26 120.
# 6 6 2.96 22.1 131.
# 7 7 2.77 19.7 145
# 8 8 2.90 22.1 156.
# 9 10 3.44 18.5 168.
# 10 11 3.34 19.8 242.
# 11 12 3.86 16.3 276.
# 12 14 3.57 15 301
# 13 15 3.48 15.4 311
# 14 16 3.84 13.3 350
# 15 17 3.39 16.3 357
# 16 19 4.60 17.0 420
# 17 20 5.34 10.4 466
我们使用imap\u dfr
函数(来自tidyversepurr
包)循环通过每个disp
百分位数限制(我们使用分位数
函数计算),计算所需的平均值,并返回一个包含结果的数据帧
library(tidyverse)
quantile(mtcars$disp, seq(0,0.95,0.05)) %>%
imap_dfr(
~bind_cols(
disp.min.percentile=.y,
disp.min=.x,
mtcars %>%
select(disp, wt, mpg) %>%
filter(disp >= .x) %>%
mutate(n = n()) %>%
group_by(n) %>%
summarise_all(list(mean=mean)) %>%
ungroup()
)) %>%
arrange(desc(disp.min))
你的意思是
mtcars%>%分组依据(分组=findInterval(disp,分位数(disp,seq(0.05,1,0.05)))%>%汇总依据(vars(wt,mpg,disp),平均值)
?
library(tidyverse)
quantile(mtcars$disp, seq(0,0.95,0.05)) %>%
imap_dfr(
~bind_cols(
disp.min.percentile=.y,
disp.min=.x,
mtcars %>%
select(disp, wt, mpg) %>%
filter(disp >= .x) %>%
mutate(n = n()) %>%
group_by(n) %>%
summarise_all(list(mean=mean)) %>%
ungroup()
)) %>%
arrange(desc(disp.min))
disp.min.percentile disp.min n disp_mean wt_mean mpg_mean
1 95% 449 2 466 5.34 10.4
2 90% 396. 4 443 4.97 13.7
3 85% 360 6 415. 4.48 14.6
4 80% 351. 7 406. 4.29 14.8
5 75% 326 8 399. 4.24 14.6
6 70% 303. 10 382. 4.08 14.8
7 65% 280. 11 374. 4.04 14.8
8 60% 276. 14 353. 4.00 15.1
9 55% 259. 14 353. 4.00 15.1
10 50% 196. 16 339. 3.92 15.7
11 45% 167. 18 320. 3.86 16.0
12 40% 160 20 304. 3.75 16.5
13 35% 146. 21 297. 3.73 16.9
14 30% 142. 22 290. 3.68 17
15 25% 121. 24 276. 3.62 17.4
16 20% 120. 25 270. 3.56 17.8
17 15% 103. 27 259. 3.48 18.1
18 10% 80.6 28 253. 3.41 18.5
19 5% 77.4 30 241. 3.32 19.3
20 0% 71.1 32 231. 3.22 20.1