Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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中多个数据帧的平均值和Sd_R - Fatal编程技术网

如何计算R中多个数据帧的平均值和Sd

如何计算R中多个数据帧的平均值和Sd,r,R,我有两个数据帧,如下所示 df1 temp time mot 12 13 12 12 13 12 12 13 12 都是虚拟表,请假设我有多个列 logit计算每列的平均值和Sd,得到下表 Var1 Mean1 SD1 Var2 Mean2 SD2 temp1 12 0 temp2 7 0 time1 13 0 time2 4 4 mot1 1

我有两个数据帧,如下所示

df1
    temp    time    mot
    12  13  12
    12  13  12
    12  13  12
都是虚拟表,请假设我有多个列

logit计算每列的平均值和Sd,得到下表


    Var1    Mean1   SD1 Var2    Mean2   SD2
    temp1   12  0   temp2   7   0
    time1   13  0   time2   4   4
    mot1    12  0   mot2    3   1.732050808


我不得不对多个数据帧和多列执行此操作。

尝试以下操作:

library(dplyr)
library(tidyr)
#Code
new <- df1 %>% bind_rows(df2,.id = 'id') %>%
  pivot_longer(-id) %>%
  mutate(Var=paste0(name,id)) %>%
  group_by(Var,.drop = F) %>%
  summarise(Mean=mean(value,na.rm = T),
            SD=sd(value,na.rm = T))
#List
List <- split(new,gsub('[a-z]','',new$Var))
List <- lapply(1:length(List), function(x) {names(List[[x]])<-paste0(names(List[[x]]),x);List[[x]]})
#Bind
res <- do.call(bind_cols,List)
库(dplyr)
图书馆(tidyr)
#代码
新%bind_行(df2,.id='id')%>%
枢轴长度(-id)%>%
变异(Var=paste0(名称、id))%>%
分组依据(变量,.drop=F)%>%
总结(平均值=平均值(数值,na.rm=T),
SD=SD(数值,na.rm=T))
#名单
列出试试这个:

library(dplyr)
library(tidyr)
#Code
new <- df1 %>% bind_rows(df2,.id = 'id') %>%
  pivot_longer(-id) %>%
  mutate(Var=paste0(name,id)) %>%
  group_by(Var,.drop = F) %>%
  summarise(Mean=mean(value,na.rm = T),
            SD=sd(value,na.rm = T))
#List
List <- split(new,gsub('[a-z]','',new$Var))
List <- lapply(1:length(List), function(x) {names(List[[x]])<-paste0(names(List[[x]]),x);List[[x]]})
#Bind
res <- do.call(bind_cols,List)
库(dplyr)
图书馆(tidyr)
#代码
新%bind_行(df2,.id='id')%>%
枢轴长度(-id)%>%
变异(Var=paste0(名称、id))%>%
分组依据(变量,.drop=F)%>%
总结(平均值=平均值(数值,na.rm=T),
SD=SD(数值,na.rm=T))
#名单

List您可以将数据帧放入一个列表中,并获得每个数据的列平均值和
sd

list_df <- list(df1, df2)
result <- do.call(cbind,lapply(list_df, function(x) 
             data.frame(col = names(x), mean = colMeans(x), sd = sapply(x, sd))))
result

#      col mean sd  col mean    sd
#temp temp   12  0 temp    7 0.000
#time time   13  0 time    4 0.000
#mot   mot   12  0  mot    3 1.732

您可以将数据帧放入一个列表中,并获得每个数据的列平均值和
sd

list_df <- list(df1, df2)
result <- do.call(cbind,lapply(list_df, function(x) 
             data.frame(col = names(x), mean = colMeans(x), sd = sapply(x, sd))))
result

#      col mean sd  col mean    sd
#temp temp   12  0 temp    7 0.000
#time time   13  0 time    4 0.000
#mot   mot   12  0  mot    3 1.732

对不起,我已经更新了我的问题的结果,@user330我已经更新了代码。希望这对你有用!有没有可能得到像结果一样的顺序?@user330只需添加这行代码
res对不起,我已经更新了结果的问题,@user330我已经更新了代码。希望这对你有用!有没有可能得到像结果一样的顺序?@user330只需添加这行代码
res
names(result) <- make.unique(names(result))