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
我确定以前有人问过这个问题,但我似乎无法在任何地方找到答案,所以如果这是重复的,我深表歉意。
我正在寻找允许我在 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