Groupby 一列并找到它的总和和计数

Posted

技术标签:

【中文标题】Groupby 一列并找到它的总和和计数【英文标题】:Groupby a column and find its sum and count 【发布时间】:2020-07-11 09:34:05 【问题描述】:

背景: 我有一个数据集,df,

  Date                          Duration


 1/2/2020 5:00:00 PM            20
 1/2/2020 5:30:01 PM            30
 1/2/2020 6:00:00 PM            10
 1/5/2020 7:00:01 AM            5
 1/6/2020 8:00:00 AM            2
 1/6/2020 9:00:00 AM            8

所需的输出:

 Date                 Total_Duration         Count

1/2/2020                60                     3
1/5/2020                5                      1
1/6/2020                10                     2

输入:

 structure(list(Date = structure(1:6, .Label = c("1/2/2020 5:00:00 PM", 
 "1/2/2020 5:30:01 PM", "1/2/2020 6:00:00 PM", "1/5/2020 7:00:01 AM", 
 "1/6/2020 8:00:00 AM", "1/6/2020 9:00:00 AM"), class = "factor"), 
 Duration = c(20L, 30L, 10L, 5L, 2L, 8L)), class = "data.frame", row.names = c(NA, 
-6L))

我尝试过的:

 library(dplyr)
 df %>% group_by(Date)  %>% add_tally() %>%
 summarize(Duration) 

任何指导都会有所帮助。

【问题讨论】:

【参考方案1】:

使用dmy_hms(假设格式为DD/MM/YYYYY HH::MM:SS)转换为'DateTime'后,我们可以只从'Date'中获取Date,将其用作分组变量并获取'的sum Duration' 和 'Count' 作为n()

library(dplyr)
library(lubridate)
df %>%
    group_by(Date = as.Date(dmy_hms(Date))) %>% 
    summarise(Total_Duration = sum(Duration), Count = n())
# A tibble: 3 x 3
#  Date       Total_Duration Count
#  <date>              <int> <int>
#1 2020-02-01             60     3
#2 2020-05-01              5     1
#3 2020-06-01             10     2

【讨论】:

以上是关于Groupby 一列并找到它的总和和计数的主要内容,如果未能解决你的问题,请参考以下文章

Groupby 一列并计算另一列的条件?

MySQL sum,用 group by 和 join 计数

Pandas DataFrame Groupby 两列并获取计数

Groupby 一列并根据 R 中的字符串向量重新排列另一列字符串

如何使用 group by(基于一列)从表中选择多列,在 hive 查询中具有和计数

python groupby和计数和总和