除了大约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
答案 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)