[英]Conditional Statistics in R (dplyr solution preferred)
我有以下數據框:
df <- data.frame("num1" = 1:3, "num2" = 4:6, "num3" = c(NA, 10, 12), stringsAsFactors = FALSE)
num1 num2 num3
1 4 NA
2 5 10
3 6 12
有沒有辦法有條件地使用每列的平均值生成匯總表? 詳細地說,如果數據框中的一列包含 null 值,則不na.exclude
該 null 並計算平均值:(10 + 12) /2 = 11。如果一列沒有任何 Z37A6259CC0C1DAE2997 值,則計算意思是:例如 (1 + 2 + 3) / 3 = 2 用於num1
列。
所需的 output:
mean_num1 mean_num2 mean_num3
2 5 11
您可以使用“應用”function、mean() function 和“na.rm=TRUE”參數遍歷所有列。
就像是
sapply(df, mean, na.rm=TRUE)
num1 num2 num3
2 5 11
然后你可以隨意重命名向量:
names(mean_col)<-paste0('mean_', names(mean_col))
mean_num1 mean_num2 mean_num3
2 5 11
使用 dplyr:
df%>%summarize(across(everything(), mean, na.rm=TRUE, .names = "mean_{col}"))
編輯
或者最簡單的,使用colMeans()
:
colMeans(df, na.rm=TRUE)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.