r groupby 来自对象列表的意思

问题描述 投票:0回答:1

来自这样的对象列表。我正在尝试估计列的平均值

x

   [[1]]

             ymin     ymax     x
             42.34721 47.26508 0.125
             43.85269 46.66316 0.375

  [[2]]

             ymin     ymax     x
             42.47198 47.33008 0.125
             43.89134 46.68878 0.375

  [[3]]

             ymin     ymax     x
             42.48128 47.35456 0.125
             43.89433 46.69511 0.375
            

我希望像这样估计平均值

      ymin                                    ymax                                 x  
      (42.34721 + 42.47198 + 42.48128)/3     (47.26508 + 47.33008 + 47.35456)/3    0.125
      (43.85269 + 43.89134 + 43.89433)/3     (46.66316 + 46.68878 + 46.69511)/3    0.375

例如,我尝试了几种选择

       df <- do.call(rbind, listdf)
       aggregate (df[1:2], df[3], mean)

       listdf %>%
       group_by(3) %>%
       summarise_all(mean) %>%
       as.data.frame()

       aggregate(. ~ x, data = df, FUN=mean)

我没有从上述尝试中得到正确的答案。非常感谢任何关于我错误的地方的建议或建议。谢谢。

r list dplyr average
1个回答
0
投票

我们可以这样做(用

dplyr
):

library(dplyr)

list_of_dataframes <- list(
  data.frame(
    ymin = c(42.34721, 43.85269),
    ymax = c(47.26508, 46.66316),
    x = c(0.125, 0.375)
  ),
  data.frame(
    ymin = c(42.47198, 43.89134),
    ymax = c(47.33008, 46.68878),
    x = c(0.125, 0.375)
  ),
  data.frame(
    ymin = c(42.48128, 43.89433),
    ymax = c(47.35456, 46.69511),
    x = c(0.125, 0.375)
  )
)

list_of_dataframes %>%
  bind_rows() %>% 
  summarise(ymin_mean = mean(ymin), ymax_mean = mean(ymax), .by = x)
  x ymin_mean ymax_mean
1 0.125  42.43349  47.31657
2 0.375  43.87945  46.68235
© www.soinside.com 2019 - 2024. All rights reserved.