我想用 dplyr 包为我的所有列做一个数据帧的平均值。
n = c(NA, 3, 5)
s = c("aa", "bb", "cc")
b = c(3, 0, 5)
df = data.frame(n, s, b)
Run Code Online (Sandbox Code Playgroud)
在这里,我希望我的函数使我尝试过的 n 和 b 列的均值 = 4,mean(df$n[df$n>0])但这对于大型数据框来说并不容易。我想要类似df %>% summarise_each(funs(mean))......谢谢
如果您不想要 0,那么您可能将它们视为 NA,所以让我们明确说明一下,然后用以下内容总结数字列na.rm = TRUE:
library(dplyr)
df[df==0] <- NA
summarize_if(df, is.numeric, mean, na.rm = TRUE)
# n b
# 1 4 4
Run Code Online (Sandbox Code Playgroud)
作为一个班轮:
summarize_if(`[<-`(df, df==0, value= NA), is.numeric, mean, na.rm = TRUE)
Run Code Online (Sandbox Code Playgroud)
并在基数中R(结果为命名数字向量)
sapply(`[<-`(df, df==0, value= NA)[sapply(df, is.numeric)], mean, na.rm=TRUE)
Run Code Online (Sandbox Code Playgroud)