R通过唯一值和频率显示

时间:2018-11-18 00:39:42

标签: r unique contingency

除了大约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和日期所需输出的示例。我的最终目标是能够对结果进行子集化,并以高频率调用来删除行/ ID。

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

2 个答案:

答案 0 :(得分: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。

答案 1 :(得分:1)

我会使用dplyr::count

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