首页 > 解决方案 > R sumif 基于多个条件

问题描述

我正在尝试根据其他列值的总和或平均值而不是按计数创建汇总表。

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

我将使用什么代码按金额和平均年龄创建表格?

标签: r

解决方案


这是一种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")

推荐阅读