簡體   English   中英

R 中的條件統計(首選 dplyr 解決方案)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM