R 按唯一值和频率显示

R Display by Unique Value and Frequency

除了大约 500 万个观察值外,我有一个如下图所示的数据集。我已经根据它们在之前代码中记录的时间过滤了日期,以仅包括在工作时间进行的呼叫。现在,我想根据 WORKERCALL_ID 分隔日期,以便查看每个工作人员的所有唯一日期的列表以及每个 WORKERCALL_ID 在每个日期出现的次数(调用次数每个日期,由每个 WORKERCALL_ID 分隔。我尝试使用列联矩阵然后将其更改为数据框来执行此操作,但是文件太大以至于我的 R 会话总是中止。有没有人知道如何完成这个?

WORKERCALL_ID     DATE
124789244   02-01-2014
128324834   05-01-2014
124184728   06-10-2014

下面是每个 WORKERCALL_ID 和日期所需输出的示例。我的最终目标是能够对结果进行子集化并删除调用频率高的 rows/ID。

WORKERCALL_ID   DATE    FREQ
124789244   02-01-2014    4
124789244   02-23-2014    1

两个选项:

table(df$WORKERCALL_ID, df$DATE)

或者,使用 dplyr(还包括请求添加的过滤掉频率高于 5 的 ID):

df %>% group_by(WORKERCALL_ID, DATE) %>% summarize(freq=n()) %>% group_by(WORKERCALL_ID) %>% 
  filter(!any(freq>5))

示例:

rbind(as.data.frame(df),data.frame(WORKERCALL_ID=128324834, DATE="Moose",freq=6,stringsAsFactors = FALSE)) %>% group_by(WORKERCALL_ID) %>% filter(!any(freq>5))
# A tibble: 2 x 3
# Groups:   WORKERCALL_ID [2]
  WORKERCALL_ID DATE        freq
          <dbl> <chr>      <dbl>
1    124184728. 06-10-2014    1.
2    124789244. 02-01-2014    1.

请注意 ID 128324834 是如何从最终结果中删除的。

我会用dplyr::count

library(dplyr)
count(df,WORKERCALL_ID,DATE)