首页 > 解决方案 > 创建一个新的数据框,显示每列的总和

问题描述

我有一个看起来像这样的数据框

Date Food     Utility Travel 
01   1.2      12.00    0
02   10.52    0        12.50
03   9.24     0        2.7
04   3.25     0        2.7

我想创建一个新的数据框,在第一列中显示支出类型(例如食物、公用事业),然后在另一列中显示总和。我不需要新框架中的日期列,但不想从原始框架中省略它。

我希望有以下输出。

Category    Total
Utility     12.00
Food        24.21
Transport   17.9 

我尝试为每个类别创建一个新值,然后尝试将它们放在一个数据框中,但它具有转置版本,如果我有很多类别,似乎有点冗长。

标签: rdataframesum

解决方案


你可以这样做:

library(tidyverse)


test_data <- read_table2("Date Food     Utility Travel
01   1.2      12.00    0
02   10.52    0        12.50
03   9.24     0        2.7
04   3.25     0        2.7") 

test_data%>%
  select(Food:Travel) %>%
  pivot_longer(cols = everything(), names_to = "Category", values_to = "val") %>%
  group_by(Category) %>%
  summarise(Total = sum(val))
#> # A tibble: 3 x 2
#>   Category Total
#>   <chr>    <dbl>
#> 1 Food      24.2
#> 2 Travel    17.9
#> 3 Utility   12

首先选择你想要的行,然后长,然后按总和总结类别。


推荐阅读