繁体   English   中英

data.frame中的5个列表获取均值,sd,移除的异常值

[英]5 lists in data.frame get their mean, sd, removed outliers

我有5个列表的data.frame

每个列表都有3列:

T_C是TEST或CONTROL的指标

ID,T_C,SPEND

我知道如何使用lapply获得T或C的均值,但是如何使用多个列表呢?

dfList <- lapply(tableListBase, function(t) fetch(dbSendQuery(con, paste0("SELECT * FROM ",  t))))

dfList <- setNames(dfList, tableListBase).

??

对于一个列表,我可以做到吗?

means <- tapply(NET_SPEND, TC_INDICATOR, mean)

我在学习 :-)

我的目标是暂时获得这5个列表T / C的mean(),sd()。

我的最终目标是确定:均值-3 sd()和均值+ 3 sd()并将其从这6个列表集中删除,并在除去异常值后创建一个新列表。

我知道如何以更手动的形式而不是更多的代码行执行此操作,但想学习如何使用更多的FUN()方法FUN()

您可以采取以下几种方法。 我已经命令他们最有可能使用我自己的人:

# Make a list of 5 data frames.  I'll use `mtcars` for convenience, since 
# I don't have your data.

X <- lapply(1:5,
            function(i) mtcars[sample(1:nrow(mtcars),
                                      size = nrow(mtcars), 
                                      replace = TRUE), ])

library(dplyr)

# Bring all of the tables together and summarise
mapply(function(df, i){ df$tbl_id <- i; df},
       X,
       seq_along(X),
       SIMPLIFY = FALSE) %>%
  bind_rows() %>%
  group_by(tbl_id, am) %>%
  summarise(mean = mean(mpg),
            sd = sd(mpg))

# Make a list of summaries
lapply(X,
       function(df) 
       {
         df %>%
           group_by(am) %>%
           summarise(mean = mean(mpg),
                     sd = sd(mpg))
       })


# Run tapply separately for the means and sds
mean_list <- 
  lapply(X,
         function(df)
         {
           tapply(df$mpg, df$am, mean)
         }
  )

sd_list <- 
  lapply(X,
         function(df)
         {
           tapply(df$mpg, df$am, sd)
         }
  )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM