我有一个带有来自票务跟踪系统的任务分配的 data.frame。
Assignments <- data.frame('Task'=c(1, 1, 2, 3, 2, 2, 1), 'Assignee'=c('Alice', 'Bob', 'Alice', 'Alice', 'Bob', 'Chuck', 'Alice'))
我需要总结一些月度报告的数据。这是我到目前为止所拥有的:
ddply(Assignments, 'Task',
summarize,
Assignee.Count=length(Assignee),
Unique.Assignees.Involved=length(unique(Assignee)),
Assignees.Involved=paste(Assignee, sep=", ", collapse=", "))
这让我很清楚:
Task Assignee.Count Unique.Assignees.Involved Assignees.Involved
1 1 3 2 Alice, Bob, Alice
2 2 3 3 Alice, Bob, Chuck
3 3 1 1 Alice
在 Assignees.Involved 列中,我想进一步总结数据。在第 1 行,我希望它说“Alice 2,Bob 1”。在我看来,我需要使用其他plyr
方法来获取每个任务的受让人,对它们进行排序,然后通过函数运行它们,然后rle
将长度和值粘贴在一起。我不知道如何在汇总函数中做到这一点。
这是整个data.frame的结果:
paste(rle(as.vector(sort(Assignments$Assignee)))$values,
rle(as.vector(sort(Assignments$Assignee)))$lengths,
sep=" ", collapse=", ")
结果:
[1] "Alice 4, Bob 2, Chuck 1"