Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:基于计数聚合并创建列_R_Dplyr_Lapply - Fatal编程技术网

R:基于计数聚合并创建列

R:基于计数聚合并创建列,r,dplyr,lapply,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

我肯定这个问题以前被问过,但我似乎在任何地方都找不到答案,所以如果这是重复的,我道歉

我正在寻找一个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完成。然后,我需要能够循环遍历代码,并在VAR1中每次出现新级别时创建一个新列。最后,我需要在每个星期内对Var1的每个级别进行计数。请注意,我可能可以找到一种手动执行此操作的方法,但我正在寻找一种自动化的解决方案,因为在Var1中我将有数千个唯一的值。结果会是这样的:

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

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

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
library(重塑2)
#创建宽数据帧(从长数据帧开始)
res res
a、b、c周
1    1 2 3 0
2    2 1 1 3
3    3 2 2 0

哇,真的那么简单。R的美丽。谢谢!