Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.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_Tidyverse - Fatal编程技术网

计算R中不同组之间的平均值和标准偏差

计算R中不同组之间的平均值和标准偏差,r,tidyverse,R,Tidyverse,我有以下数据集: df1如果我们需要做相应的组汇总,那么使用map2 library(dplyr) library(purrr) library(rowr) map2(names(df1)[1:3], names(df1)[4:6], ~ df1 %>% dplyr::select(.x, .y) %>% group_by_at(.x) %>% summarise_at(1, list(sd = s

我有以下数据集:


df1如果我们需要做相应的组汇总,那么使用
map2

library(dplyr)
library(purrr)
library(rowr)
map2(names(df1)[1:3], names(df1)[4:6], ~
       df1 %>% 
          dplyr::select(.x, .y) %>%
          group_by_at(.x) %>% 
          summarise_at(1, list(sd = sd, mean = mean))) %>% 
  reduce(cbind.fill, fill = NA)
# people       sd mean time      sd.1 mean.1 range       sd     mean
#1      1 1.000000    2   21 0.7071068    4.5     2 1.258306 3.750000
#2     11 2.828427    3   33 2.1213203    3.5    12 2.081666 2.666667
#3     12 1.414214    2   41 1.7320508    4.0    NA       NA       NA
map2(df1[1:3], df1[4:6], ~  
    tibble(grp = .x, value = .y) %>%
    group_by(grp) %>%
    summarise(valueSD = sd(value), valueMean = mean(value))) %>% 
    reduce(cbind.fill, fill = NA)

或者,我们可以在
map2

library(dplyr)
library(purrr)
library(rowr)
map2(names(df1)[1:3], names(df1)[4:6], ~
       df1 %>% 
          dplyr::select(.x, .y) %>%
          group_by_at(.x) %>% 
          summarise_at(1, list(sd = sd, mean = mean))) %>% 
  reduce(cbind.fill, fill = NA)
# people       sd mean time      sd.1 mean.1 range       sd     mean
#1      1 1.000000    2   21 0.7071068    4.5     2 1.258306 3.750000
#2     11 2.828427    3   33 2.1213203    3.5    12 2.081666 2.666667
#3     12 1.414214    2   41 1.7320508    4.0    NA       NA       NA
map2(df1[1:3], df1[4:6], ~  
    tibble(grp = .x, value = .y) %>%
    group_by(grp) %>%
    summarise(valueSD = sd(value), valueMean = mean(value))) %>% 
    reduce(cbind.fill, fill = NA)

或使用
lappy

lapply(1:3, function(i) 
      df1[c(i, i + 3)] %>% 
         group_by_at(1) %>% 
         summarise_all(list(mean, sd))) %>% 
   reduce(cbind.fill, fill = NA)

您可以将其包装在
列表(sd,mean)
中。请注意,当您按3进行分组时。列,其中一些列只有一行,这意味着您的sd将是NAPLE check
df1%>%count(人员、时间、范围)
每个组只有一行我想说的是
count
的频率是1,因为您正试图按组执行
sd
您需要相应的组/平均值/sd,即
map2(名称(df1)[1:3],名称(df1)[4:6],~df1%>%select(.x,.y)%>%group\u by\u at(.x)%>%summary\u at(1,list(sd=sd,mean=mean))
@User20100更新为
lappy