簡體   English   中英

R sumif 基於多個條件

[英]R sumif based on multiple conditions

我正在嘗試根據其他列的值的總和或平均值而不是計數來創建匯總表。

Amount  Age ActualResult    Prediction
100     20  Pass            Pass
200     24  Pass            Pass
300     30  Pass            Fail
400     34  Pass            Fail
500     40  Fail            Pass
600     44  Fail            Pass
700     50  Fail            Fail
800     54  Fail            Fail

我可以使用以下代碼通過計數獲取表格:

table(data$ActualResult,data$Prediction)


            Predict Pass    Predict Fail
Actual Pass 2               2
Actual Fail 2               2

但我不知道如何按金額或平均年齡的總和獲得表格:按金額:

            Predict Pass    Predict Fail
Actual Pass 300             700
Actual Fail 1100            1500

按平均年齡:

            Predict Pass    Predict Fail
Actual Pass 22              32
Actual Fail 42              52

我將使用什么代碼來按金額和平均年齡創建表格?

這可以通過questionr包來完成

questionr::wtd.table(
  data$ActualResult,
  data$Prediction,
  weights = data$Amount
)
#>      Fail Pass
#> Fail 1500 1100
#> Pass  700  300

要得到平均年齡,除以原始表

questionr::wtd.table(
  data$ActualResult,
  data$Prediction,
  weights = data$Age
) / table(data$ActualResult,data$Prediction)
#>      Fail Pass
#> Fail   52   42
#> Pass   32   22

這是一種tidyverse方式,使用您的數據作為df

library(tidyverse)

# sum of Amount
sum_amount <-
  df %>%
  group_by(ActualResult, Prediction) %>%
  summarize(sum = sum(Amount)) %>%
  pivot_wider(names_from = "Prediction", 
              values_from = "sum", 
              names_prefix = "Predict")

# average Age
avg_age <-
  df %>%
  group_by(ActualResult, Prediction) %>%
  summarize(avg = mean(Age)) %>%
  pivot_wider(names_from = "Prediction", 
              values_from = "avg", 
              names_prefix = "Predict")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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