Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何计算列表中数据帧的平均值?_R - Fatal编程技术网

R 如何计算列表中数据帧的平均值?

R 如何计算列表中数据帧的平均值?,r,R,将数据组合成一个数据框(Combine_data),将数据分为两个列表,一个包含'b'和'f'值,另一个包含其余值,并计算每个月的平均值 [[1]] # mean of values of b and f date X0 X1 mod Jan 2 2 mod1 Feb 1.5 5.5 mod1 [[2]] # mean of values of the rest (m,gg,d) date X0 X1 mod Jan ? ?

将数据组合成一个数据框(
Combine_data
),将数据分为两个列表,一个包含
'b'
'f'
值,另一个包含其余值,并计算每个月的
平均值

  [[1]] # mean of values of b and f
  date  X0 X1  mod
  Jan    2   2    mod1
  Feb    1.5  5.5    mod1
  [[2]] # mean of values of the rest (m,gg,d)
  date X0 X1  mod
  Jan  ?  ?    mod2
  Feb   ?  ?    mod2  

如果

library(dplyr)
library(purrr)

bind_rows(merged.list) %>%
  group_split(mod %in% c('b', 'f'), .keep = FALSE) %>%
  map(~.x %>% group_by(date) %>% summarise(across(X0:X1, mean, na.rm = TRUE)))
库(dplyr)
图书馆(purrr)
映射%c('b','f'),~
.x%>%
分组单位(日期)%>%
总结(跨越(其中(是数字),平均值)),.else=NA_字符%>%
keep(否定(is.null))
#[[1]]
#一个tibble:3x3
#日期X0-X1
#*   
#2月1日3.5
#1月2日12
#3月3日6.5 6.5
#[[2]]
#一个tibble:3x3
#日期X0-X1
#*   
#2月1日-0.50
#2001年1月2日
#3月3日6.5.5

非常感谢,如果我有X0、X1、X2、X3、X4(几列)?在
dplyr
答案中,你可以使用
跨越(X0:X4,mean,na.rm=TRUE)
甚至
跨越(以('X')开头,mean,na.rm=TRUE)
combine_data <- do.call(rbind, merged.list)

lapply(split(combine_data, combine_data$mod %in% c('b', 'f')), function(x) {
  aggregate(cbind(X0, X1)~date, x, mean)
})
library(dplyr)
library(purrr)

bind_rows(merged.list) %>%
  group_split(mod %in% c('b', 'f'), .keep = FALSE) %>%
  map(~.x %>% group_by(date) %>% summarise(across(X0:X1, mean, na.rm = TRUE)))
library(dplyr)
library(purrr)
map_if(merged.list, .p = ~ first(.x$mod) %in% c('b', 'f'), ~ 
     .x %>% 
        group_by(date) %>%
        summarise(across(where(is.numeric), mean)), .else = NA_character_) %>%
     keep(negate(is.null))
#[[1]]
# A tibble: 3 x 3
#  date     X0    X1
#* <chr> <dbl> <dbl>
#1 Feb     0     3.5
#2 Jan     1     2  
#3 Mar     6.5   6.5

#[[2]]
# A tibble: 3 x 3
#  date     X0    X1
#* <chr> <dbl> <dbl>
#1 Feb    -0.5   0  
#2 Jan     2     1  
#3 Mar     6.5   5.5