我有一个名为transaction的数据集,具有350241个观察值。
数据样本:
transaction_id timestamp product_code
19241 2001-01-11 15:48:00 1
29247 2001-04-08 11:25:00 9
34567 2001-03-10 16:24:00 17
48790 2001-09-23 13:33:00 45
56789 2001-11-01 11:47:00 52
问题
在18:00时间内进行了多少笔交易? 如何使用R找到它? 我尝试使用表格,但是数据集很大,因此没有显示所有的频率计数。
答案 0 :(得分:0)
一种方法是使用hour
创建一个lubridate::hour(timestamp)
变量:
library(tidyverse)
library(lubridate)
df %>%
count(hour = hour(timestamp))
然后您可以仅过滤18小时:
df %>%
count(hour = hour(timestamp)) %>%
filter(hour == 18)
完成同一件事的更详细的方法:
df %>%
mutate(hour = hour(timestamp)) %>%
group_by(hour) %>%
tally() %>%
filter(hour == 18)
答案 1 :(得分:0)
在base R
中,将'timestamp'转换为POSIXlt
,提取hour
,将其转换为逻辑向量(==
)并获得sum
真元素的组合
sum(as.POSIXlt(df1$timestamp)$hour == 18)