【问题标题】:R method of summarising vector up to certain quantile(s)将向量汇总到某个分位数的R方法
【发布时间】:2020-06-29 05:12:38
【问题描述】:

我有大约 36 个感兴趣区域 (ROI) 的数据。每个 ROI 380 像素。 我的数据是这样的:

      ROI_name    T_K
1   bt_full_05 303.88
1.1 bt_full_05 303.93
1.2 bt_full_05 303.72
1.3 bt_full_05 303.43
1.4 bt_full_05 302.93
1.5 bt_full_05 302.93
...
36.362 bt_full_40 301.65
36.363 bt_full_40 301.47
36.364 bt_full_40 301.52
36.365 bt_full_40 302.02
36.366 bt_full_40 303.28
36.367 bt_full_40 303.78

我想计算每个 ROI 的平均 T_K,但过滤掉低于给定分位数的值,例如0.25,并输出直到该分位数的值的平均值。理想情况下,我可以报告几个分位数的平均 T_K,0.1、0.25、0.5... 我有:

groupquant <- cleared_data %>% group_by(ROI_name) %>% 
  summarise(quants = quantile(T_K, 0.1))

这给了我分位数。但是这个

groupquant <- cleared_data %>% group_by(ROI_name) %>% 
  filter(cleared_data$T_K <= quantile(T_K, 0.1)) #%>% 

抛出

错误:结果的长度必须是 392,而不是 14082

我无处可去!干杯,安德鲁。

【问题讨论】:

  • 我想知道如果你改用filter(T_K &lt;= quantile(T_K, 0.1))会发生什么。
  • 爵士乐是正确的。问题是,通过使用cleared_data$T_K,您将长度为 14082 的完整向量与长度为 392 的向量的子组进行比较。只需使用 T_K
  • 感谢@jazzurro,一切顺利。但我也想计算 vals

标签: r dplyr mean quantile


【解决方案1】:

我认为示例数据有点小,无法证明您想要这样做。所以我创建了自己的数据,称为foo。对于每个ROI_name,我用filter() 删除了一些数据。所有小于quantile(T_K, 0.25) 的值都将被删除。然后,我决定取两个分位数(即 0.5 和 0.75)的值。在summarize() 部分,我得到一个带有两个数值的向量并为每个组创建一个数据框。最后,我使用unnest() 来创建最终输出。

library(tidyverse)

set.seed(111)

foo <- tibble(ROI_name = rep(c("bt_full_05", "bt_full_40", "bt_full_2"), each = 30),
              T_K = runif(n = 90, min = 0, max = 300))

group_by(foo, ROI_name) %>% 
filter(T_K > quantile(T_K, 0.25)) %>% 
summarize(temp = list(enframe(quantile(x = T_K, prob = c(0.5, 0.75)),
                              name = "percentile"))) %>% 
unnest(temp)

  ROI_name   percentile value
  <chr>      <chr>      <dbl>
1 bt_full_05 50%         157.
2 bt_full_05 75%         183.
3 bt_full_2  50%         157.
4 bt_full_2  75%         229.
5 bt_full_40 50%         192.
6 bt_full_40 75%         237.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-27
    • 2015-01-04
    • 1970-01-01
    • 2021-05-29
    • 2019-11-19
    • 1970-01-01
    相关资源
    最近更新 更多