我有一个 5个列表
的data.frame每个列表有3列:
T_C是TEST或CONTROL
的指标id,T_C,SPEND
我知道如何使用lapply来获得T或C的平均值,但是你如何使用多个列表呢?
$echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
...
对于单个列表,我可以这样做吗?
dfList <- lapply(tableListBase, function(t) fetch(dbSendQuery(con, paste0("SELECT * FROM ", t))))
dfList <- setNames(dfList, tableListBase).
我正在学习: - )
我的目标是暂时在这5个列表T / C上获得mean(),sd()。
我的最终目标是识别:mean - 3 sd()和mean + 3 sd()并从这6个列表集中删除它们并在删除异常值后创建一个新列表。
我知道如何在更加手动的正式行中执行此操作,而不是更多行代码,但是想学习如何使用更多means <- tapply(NET_SPEND, TC_INDICATOR, mean)
方法: - )
答案 0 :(得分:1)
您可以采取以下几种方法。我已经订购过哪一个我最有可能使用的那个:
# 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)
}
)