R 连续平均数和百分位数的计算

R 连续平均数和百分位数的计算,r,dplyr,R,Dplyr,我有数据集 zz <- data.frame(IP=c(2.0,1.8,2.8,3.1,5.3), A=c(18,14,16,20,21), B=c(27,20,26,31,29)) 理想情况下,我还希望能够选择基于均值的数据帧。例如,选择A的平均值至少为19的项目,即最后三行。 我试过密码 zz %>% arrange(IP) %>% mutate(mean.A = cummean(A)) %&

我有数据集

zz <- data.frame(IP=c(2.0,1.8,2.8,3.1,5.3), 
                 A=c(18,14,16,20,21), 
                 B=c(27,20,26,31,29))
理想情况下,我还希望能够选择基于均值的数据帧。例如,选择A的平均值至少为19的项目,即最后三行。
我试过密码

zz %>%
  arrange(IP) %>%
  mutate(mean.A = cummean(A)) %>%
  select(IP, mean.A>=19)
但是平均数并不完全符合我的愿望,选择数也没有找到平均数

我探究了这些问题,其他问题都没有成功。
这可行吗?这是正确的方法吗?

尝试以下方法

zz %>%
arrange(IP) %>%
mutate(mean.A = sapply(A, function(x)mean(ifelse(zz$A >= x, zz$A, NA), na.rm = T)))
可能有一个完全管道化的解决方案,它不需要与父数据帧交互,但我没有足够的聪明来解决它。

您可以:

zz%>%
    mutate(meanA = rev(cummean(rev(A))),
            MedianB = rev(map_dbl(n():1,~median(B[.x:n()]))))
   IP  A  B meanA MedianB
1 2.0 18 27 17.80    27.0
2 1.8 14 20 17.75    27.5
3 2.8 16 26 19.00    29.0
4 3.1 20 31 20.50    30.0
5 5.3 21 29 21.00    29.0

你能解释一下
平均值A
中间值B
的计算方法吗?你是怎么得到这些数字的?你的问题不完整。你从哪里得到17.8分?18.8怎么样?等的手段?你能否解释一下你是如何提出中值的,以澄清均值和中值的计算。根据IP排序后,您将得到
zz感谢您的回答。它对于中值计算特别有用。我还尝试使用%>%过滤器(zz,meanA>19)对平均值A至少为19的数据帧进行子集划分,但我得到了错误:结果的长度必须为5,而不是15。目标结果将类似于zz
zz%>%
    mutate(meanA = rev(cummean(rev(A))),
            MedianB = rev(map_dbl(n():1,~median(B[.x:n()]))))
   IP  A  B meanA MedianB
1 2.0 18 27 17.80    27.0
2 1.8 14 20 17.75    27.5
3 2.8 16 26 19.00    29.0
4 3.1 20 31 20.50    30.0
5 5.3 21 29 21.00    29.0