r - 基于 R 中的另一列对列的所有组合求和
问题描述
我在 R 中有以下示例数据框:
Var1 = c("Shirt1", "Shirt2", "Shirt3", "Shirt4", "Pants1", "Pants2", "Pants3", "Jacket1", "Jacket2", "Jacket3")
Var2 = c(1,4,3,4,6,5,2,3,6,2)
Bin = c("A", "A", "A", "A", "B", "B", "B", "C", "C", "C")
MyData = data.frame(Var1, Var2, Bin)
看起来像这样:
Var1 Var2 Bin
1 Shirt1 1 A
2 Shirt2 4 A
3 Shirt3 3 A
4 Shirt4 4 A
5 Pants1 6 B
6 Pants2 5 B
7 Pants3 2 B
8 Jacket1 3 C
9 Jacket2 6 C
10 Jacket3 2 C
所以有 3 个 bin,每个 bin 中有可变数量的 Var1 条目。请注意,此数据框中还有更多行(和箱),但在这里进行了简化。组合由来自每个 bin 的 Var1 的一个条目组成。我想在所有 bin 中找到所有可能的 Var1 组合,然后为组合求和 Var2。输出看起来像这样:
Bin A Bin B Bin C Sum
Shirt1 Pants1 Jacket1 10
Shirt2 Pants1 Jacket1 13
Shirt2 Pants2 Jacket1 12
Shirt3 Pants1 Jacket2 15
Etc.
虽然我看到了一些类似的线程,但这个问题似乎足够独特,至少基于我对 R 的熟练程度。
任何建议都非常感谢,谢谢!
解决方案
我们可以创建一个包含所有可能组合的数据框
temp <- do.call(expand.grid, split(MyData$Var1, MyData$Bin))
temp
# A B C
#1 Shirt1 Pants1 Jacket1
#2 Shirt2 Pants1 Jacket1
#3 Shirt3 Pants1 Jacket1
#4 Shirt4 Pants1 Jacket1
#5 Shirt1 Pants2 Jacket1
#6 Shirt2 Pants2 Jacket1
#....
然后为每一行子集相关数据和sum
Var2
值。
temp$Sum <- apply(temp, 1, function(x) sum(MyData$Var2[MyData$Var1 %in% x]))
temp
# A B C Sum
#1 Shirt1 Pants1 Jacket1 10
#2 Shirt2 Pants1 Jacket1 13
#3 Shirt3 Pants1 Jacket1 12
#4 Shirt4 Pants1 Jacket1 13
#5 Shirt1 Pants2 Jacket1 9
#6 Shirt2 Pants2 Jacket1 12
#....
推荐阅读
- javascript - 突然出现关于“从不”类型的打字稿错误无处不在
- python - 如何在python中完成程序并在后台继续上传文件
- ansible - Ansible - 合并和合并列表
- python - 未定义使用 tkinter root 的 python 错误
- python - 如何从 python/pygame 中的文件夹导入多个图像
- python - 读取 JSON 文件收到错误消息
- python - 根据用户对消息的反应显示另一页信息 (discord.py)
- c++ - ctor 错误函数已定义且具有不同类型的 c++ 或 mql
- python - 即使所有字段都有值,django is_valid 也会为模型表单返回 false
- java - 如何修复异常 java.lang.StringIndexOutOfBoundsException?