如何创建列的频率,然后对R中的数据进行汇总

问题描述 投票:0回答:1

目标:

我有一个数据集df,我希望首先统计每个日期的出现次数,然后将输出乘以一定的数目。

Sent                      Duration   Length

1/7/2020  8:11:00 PM       34         216
1/22/2020 7:51:05 AM      432         111
1/7/2020  1:35:08 AM       57          90
1/22/2020 3:43:26 AM       22         212
1/22/2020 4:00:00 AM       55         500

预期结果:

Date                     Count          Aggregation(80)
1/7/2020                 2              160
1/22/2020                3              240

我希望计算特定'datetime'发生的次数,然后将该结果乘以80。日期1/7/2020发生两次,日期1/22/2020发生3次。然后,我将此数字乘以数字80。

目标是:

structure(list(Sent = structure(c(5L, 3L, 4L, 1L, 2L), .Label = c("1/22/2020 3:43:26 AM", 
"1/22/2020 4:00:00 AM", "1/22/2020 7:51:05 PM", "1/7/2020 1:35:08 AM", 
"1/7/2020 8:11:00 PM"), class = "factor"), Duration = c(34L, 
432L, 57L, 22L, 55L), length = c(216L, 111L, 90L, 212L, 500L)), class = "data.frame", row.names = c(NA, 
-5L))

这是我尝试过的:

df1<- aggregate(df$Sent, by=list(Category= df$dSent), 
    FUN=length)

但是,我需要输出日期与汇总一起出现的频率(乘以80)

欢迎提出任何建议。

r dplyr tidyverse lubridate stringr
1个回答
0
投票

这里是data.table的方式。代码

library( data.table )
#set data as data.table
setDT(mydata)
#set timestamps as posix
mydata[, Sent := as.POSIXct( Sent, format = "%m/%d/%Y %H:%M:%S %p" ) ]
#summarise
mydata[, .(Count = .N, Aggregation = .N * 80), by = .(Date = as.Date(Sent) )]

输出

#          Date Count Aggregation
# 1: 2020-01-07     2         160
# 2: 2020-01-22     3         240
© www.soinside.com 2019 - 2024. All rights reserved.