在数据框中(见下文(,我想计算每个活动/事件的频率(见第二列(。事件的频率应显示在适当的列中(第三列到第六列(。
例如,在第 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)