计算 R 中事件的频率



在数据框中(见下文(,我想计算每个活动/事件的频率(见第二列(。事件的频率应显示在适当的列中(第三列到第六列(。

例如,在第 3 列(打开的文档(和第 2 行(用户 1(中应写数字"1",在第 6 列(关闭文档(中也应计算为"1"。

或者,如果用户 4 编辑文档五次,则"5"应显示在第 5 列(编辑文档(和第 5 行(用户 4(中。

由于用户数量庞大,还需要循环函数。

user  activity                                   Open Document    Read Document    Edit Document   Close Document
1     c("Open Document", "Close Document", …)
2     c("Open Document", "Read Document", …)
3     c("Open Document", "Close Document", …)
4     c("Open Document", "Edit Document", …)

感谢您的帮助。

您可以使用table计算事件的频率。我使用strsplit拆分为单个活动,并对所有活动的级别进行factor

x[,-1:-2]  <- do.call(rbind, lapply(strsplit(x$activity, ",")
, function(i) table(factor(i, levels=colnames(x)[-1:-2]))))
x
#  user   activity Open Read Edit Close
#1    1 Open,Close    1    0    0     1
#2    2  Open,Read    1    1    0     0
#3    3 Open,Close    1    0    0     1
#4    4  Open,Edit    1    0    1     0

数据:

x <- data.frame(user=1:4, activity=c("Open,Close", "Open,Read", "Open,Close", "Open,Edit")
, Open=0, Read=0, Edit=0, Close=0, stringsAsFactors=FALSE)

最新更新