R:根据计数聚合并创建列

时间:2015-08-18 13:03:41

标签: r dplyr lapply

我确定之前已经问过这个问题,但我似乎无法在任何地方找到答案,所以如果这是重复,我会道歉。

我正在寻找允许我在R中聚合变量的R代码,但这样做会创建新的列来计算因子级别的实例。

例如,假设我有以下数据:

Week Var1
1       a
1       b
1       a
1       b
1       b
2       c
2       c
2       a
2       b
2       c
3       b
3       a
3       b
3       a

首先,我希望按周汇总。我确信这可以通过dplyr中的group_by来完成。然后,我需要能够循环遍历代码并在每次Var 1中出现新级别时创建一个新列。最后,我需要每周内每个级别的Var1计数。请注意,我可能想办法手动执行此操作,但我正在寻找一种自动化解决方案,因为我将在Var1中拥有数千个唯一值。结果将是这样的:

 Week   a   b   c
   1    2   3   0
   2    1   1   3
   3    2   2   0

1 个答案:

答案 0 :(得分:2)

我认为从你说问题的方式来看,你一直在寻找错误的东西/太复杂的东西。这是一个简单的数据重塑问题,因此可以通过reshape2来解决:

library(reshape2)

#create wide dataframe (from long)
res <- dcast(Week~Var1, value.var="Var1",
             fun.aggregate = length, data=data)
> res
  Week a b c
1    1 2 3 0
2    2 1 1 3
3    3 2 2 0