【问题标题】:Mean values from selected row groups所选行组的平均值
【发布时间】:2023-01-27 00:36:35
【问题描述】:

我想确定所选行的平均值(例如,以下数据框中化合物“PosCtrl”、“Ab1”、“Ab1_gl”、“Ab2”等的平均值:

structure(list(Compounds = c("PosCtrl", "PosCtrl", "PosCtrl", 
"PosCtrl", "Ab1", "Ab1", "Ab1", "Ab1", "Ab1", "Ab1_gl", "Ab1_gl", 
"Ab1_gl", "Ab1_gl", "Ab1_gl", "Ab1_gl", "Ab2", "Ab2", "Ab2", 
"Ab2", "Ab2", "Ab2", "Ab3", "Ab3", "Ab3", "Ab3", "Ab3", "Ab4", 
"Ab4", "Ab4", "Ab4", "Ab5", "Ab5", "Ab5", "Ab5", "Ab5", "negctrl", 
"negctrl", "negctrl", "negctrl", "negctrl"), Values = c(7.77, 
5.78, 7.01, 7.23, 0.99, 0.91, 1.23, 0.86, 0.93, 0.76, 0.89, 0.58, 
0.8, 0.76, 0.46, 0.91, 0.8, 0.91, 1, 0.64, 0.75, 0.89, 0.87, 
0.77, 0.89, 0.91, 0.82, 1.33, 1.14, 1.44, 1.03, 1.02, 0.88, 0.99, 
1.1, 0.76, 0.68, 0.93, 0.84, 0.8)), class = "data.frame", row.names = c(NA, 
40L))

然后我想生成一个包含平均值的表。我有多个数据框,每个类别(化合物)有数千个值。

这是我想获得的每个数据框:

structure(list(PosCtrl = 6.95, Ab1 = 0.98, Ab1_gl = 0.71, Ab2 = 0.83, 
    Ab3 = 0.86, Ab4 = 1.19, Ab5 = 1, negctrl = 0.8), class = "data.frame", row.names = "Mean")

这是我试过的代码,但它返回错误(x 必须是数字)

Data1$mean <-
  with (Data1, ave( Values, findInterval(Compounds, c(PosCtrl, Ab1, Ab1_gl,Ab2,Ab3, Ab4, Ab5, negctrl)), FUN= mean))

非常感谢。

【问题讨论】:

  • 请发布完整的错误消息。

标签: r mean


【解决方案1】:

一个tidyverse解决方案

df %>%  
  group_by(Compounds) %>%  
  summarise(mean = mean(Values)) %>% 
  pivot_wider(names_from = Compounds, values_from = mean)

# A tibble: 1 × 8
    Ab1 Ab1_gl   Ab2   Ab3   Ab4   Ab5 negctrl PosCtrl
  <dbl>  <dbl> <dbl> <dbl> <dbl> <dbl>   <dbl>   <dbl>
1 0.984  0.708 0.835 0.866  1.18  1.00   0.802    6.95

【讨论】:

    【解决方案2】:

    您可以使用 aggregate 而不是 ave

    > aggregate(Values ~ Compounds, FUN=mean, data=dat)
      Compounds    Values
    1       Ab1 0.9840000
    2    Ab1_gl 0.7083333
    3       Ab2 0.8350000
    4       Ab3 0.8660000
    5       Ab4 1.1825000
    6       Ab5 1.0040000
    7   negctrl 0.8020000
    8   PosCtrl 6.9475000
    

    【讨论】:

      猜你喜欢
      • 2021-12-09
      • 2020-09-15
      • 1970-01-01
      • 2012-03-18
      • 2021-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多