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

R: Aggregate and create columns based on counts

我确定以前有人问过这个问题,但我似乎无法在任何地方找到答案,所以如果这是重复的,我深表歉意。

我正在寻找允许我在 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

我认为从你问题的措辞来看,你一直在寻找错误 thing/something 太复杂了。这是一个简单的数据重塑问题,因此可以用 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