【问题标题】:R function to calculate means only in numeri variables in data frameR函数计算仅在数据框中的数字变量中
【发布时间】:2022-12-09 10:59:36
【问题描述】:
我有这个功能,但没有用,我需要帮助
结果返回缺失值
promedioXvariable <- function(df, cat) {
res <- list()
for (x in levels(df[[cat]])) {
aux <- list()
for (var in colnames(df)) {
if(class(df[[var]]) == "numeric") {
aux[[var]] <- with(df, tapply(var, x, mean))
}
}
res[[x]] <- aux
}
return(res)
}
我需要在一个尽可能简单的函数中执行这个过程
【问题讨论】:
标签:
r
function
rstudio
mean
【解决方案1】:
使用 dplyr,首先 select() 仅数字列,然后 summarize(across()) 这些以获取手段。如果您想在缺少值的情况下获得均值,请记住包含na.rm = TRUE。
使用 dplyr::starwars 作为示例数据:
library(dplyr)
starwars %>%
select(where(is.numeric)) %>%
summarize(across(everything(), mean, na.rm = TRUE))
# A tibble: 1 × 3
height mass birth_year
<dbl> <dbl> <dbl>
1 174. 97.3 87.6