首页 > 解决方案 > R将group_by表转换为新数据框

问题描述

我按这样的数据分组

by_cyl <- mtcars %>% group_by(cyl, gear) %>% summarise(HP = sum(hp))

我想把这张表从

圆柱体 齿轮 生命值
4 3
4 4 608
4 5 204
6 3 215
6 4 466
6 5 175
8 3 2330
8 5 599

以 cyl 作为列,将 gear 作为行

4 6 8
3 97 215 2330
4 608 466 -
5 204 175 599

标签: rdataframedplyrtidyr

解决方案


这是一个简单的旋转任务,您可以使用tidyr'spivot_wider()函数来完成

library(dplyr)
library(tidyr)

mtcars %>%
  group_by(cyl, gear) %>%
  summarise(HP = sum(hp)) %>% 
  pivot_wider(gear, names_from = "cyl", values_from = "HP")

# A tibble: 3 x 4
   gear   `4`   `6`   `8`
  <dbl> <dbl> <dbl> <dbl>
1     3    97   215  2330
2     4   608   466    NA
3     5   204   175   599

推荐阅读