
[英]Aggregate by group and get count, mean and sd of non-NA values for different data.frame columns
[英]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.