在R语言中将列值分组为类别并对比Team A与Team B
在R中整理数据并对比Team A与Team B
步骤1:构造/导入数据
先把你的数据转换成R的数据框:
df <- data.frame( Organization = c("A", "Cat", "Dog", "Pig", "B", "Lion", "Tiger", "Elephant"), Team_A = c(10, 55, 22, 52, 12, 32, 43, 85), Team_B = c(23, 41, 33, 85, 12, 44, 55, 69), stringsAsFactors = FALSE )
步骤2:整理数据,添加类别列
使用dplyr和tidyr包将A、B转换为类别标签,移除原类别行:
library(dplyr) library(tidyr) df_clean <- df %>% # 标记类别行,其他行设为NA mutate(Category = ifelse(Organization %in% c("A", "B"), Organization, NA)) %>% # 向下填充类别值,让每个数据行匹配对应的类别 fill(Category, .direction = "down") %>% # 移除A、B所在的行 filter(!Organization %in% c("A", "B"))
处理后的数据结构:
> df_clean Organization Team_A Team_B Category 1 Cat 55 41 A 2 Dog 22 33 A 3 Pig 52 85 A 4 Lion 32 44 B 5 Tiger 43 55 B 6 Elephant 85 69 B
步骤3:进行Team A与Team B的对比
方式1:计算差异值与汇总统计
添加差值列,并按类别统计总和、均值:
# 计算每个条目的Team A - Team B差值 df_clean <- df_clean %>% mutate(Difference = Team_A - Team_B) # 按类别汇总 summary_stats <- df_clean %>% group_by(Category) %>% summarise( 总得分_TeamA = sum(Team_A), 总得分_TeamB = sum(Team_B), 平均得分_TeamA = mean(Team_A), 平均得分_TeamB = mean(Team_B), 平均差值 = mean(Difference) ) > summary_stats # A tibble: 2 × 6 Category 总得分_TeamA 总得分_TeamB 平均得分_TeamA 平均得分_TeamB 平均差值 <chr> <dbl> <dbl> <dbl> <dbl> <dbl> 1 A 129 159 43 53 -10 2 B 160 168 53.3 56 -2.67
方式2:可视化对比
用ggplot2绘制分组条形图,直观展示每个类别下Team A和Team B的数值差异:
library(ggplot2) # 转换为长格式方便绘图 df_long <- df_clean %>% pivot_longer(cols = c(Team_A, Team_B), names_to = "Team", values_to = "Score") ggplot(df_long, aes(x = Organization, y = Score, fill = Team)) + geom_bar(stat = "identity", position = "dodge", width = 0.7) + facet_wrap(~Category, scales = "free_x") + theme_minimal() + labs(title = "Team A vs Team B 得分对比", x = "组织", y = "得分") + scale_fill_manual(values = c("Team_A" = "#2E86AB", "Team_B" = "#F24C4C"))
内容的提问来源于stack exchange,提问作者k34l
相关产品推荐
相关产品推荐

