根据R中的条件总结和创建新变量

索尔·加西亚

我制作了这个虚拟数据集:

df = data.frame(Order = "Order1", 
       Condition = c("P", "A", "B", "C", "D", "E", "F"),
       Value = c(500, -10, -5,0,0, -10,0))

假设某些条件属于不同的组。

list = list( Group1 = c("A", "B"), 
      Group2 = c("C", "D"), 
      Group3 = c("E","F"))

我需要按条件聚合它们,在那里我得到每个组的总和和计数。

预期输出:

Order   P   Group1 Group2 Group3 Group1n Group2n Group3n
Order1 500   -15     0      -10    2        0       1

我在想这样的事情:

df %>% group_by(Order) %>% summarise(Group1 = sum(Value[Condition == "A" | Condition == "B" ]),
                                 Group2 = sum(Value[Condition == "C" | Condition == "D" ] ),
                                 Group3 = sum(Value[Condition == "E" | Condition == "F"]),
                                 Group1n = length(Value[Condition == "A" | Condition == "B" ]),
                                 Group2n = length(Value[Condition == "C" | Condition == "D" ]),
                                 Group3n = length(Value[Condition == "E" | Condition == "F" ])) 

我的输出:

  # A tibble: 1 x 7
Order  Group1 Group2 Group3 Group1n Group2n Group3n
 <fct>   <dbl>  <dbl>  <dbl>   <dbl>   <int>   <int>
 Order1  -15.0      0  -10.0    2       2       2

但我无法正确计数..还有一种有效的方法可以让我传递列表而不是明确写出条件 ==A 或 B ...等。

谢谢

梅丽莎·凯

这应该给你你想要的:

df %>% 
  group_by(Order) %>% 
  summarise(Group1 = sum(Value[Condition == "A" | Condition == "B" ]),
            Group2 = sum(Value[Condition == "C" | Condition == "D" ] ),
            Group3 = sum(Value[Condition == "E" | Condition == "F"]),
            Group1n = sum(Condition == "A" | Condition == "B"),
            Group2n = sum(Condition == "C" | Condition == "D"),
            Group3n = sum(Condition == "E" | Condition == "F"))

你可以多清理一下。这个版本也只计算非零值(而不是每个组中的所有行。)

# don't rename "list"
list_of_groups = list( Group1 = c("A", "B"), 
  Group2 = c("C", "D"), 
  Group3 = c("E","F"))
df %>% 
  group_by(Order) %>% 
  summarise(Group1 = sum(Value[Condition %in% list_of_groups$Group1]),
            Group2 = sum(Value[Condition %in% list_of_groups$Group2] ),
            Group3 = sum(Value[Condition %in% list_of_groups$Group3]),
            Group1n = sum(Condition %in% list_of_groups$Group1 & Value != 0),
            Group2n = sum(Condition %in% list_of_groups$Group2 & Value != 0),
            Group3n = sum(Condition %in% list_of_groups$Group3 & Value != 0))

利用您的组列表 - 这样,如果您更改组(如果相关),则不必修复所有内容。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在R中:如何根据现有变量的条件创建新变量

来自分类Dev

在R中创建条件新变量

来自分类Dev

R根据行顺序和条件创建组变量

来自分类Dev

根据Spark中的窗口和条件创建新列

来自分类Dev

在R中创建一个包含条件行和的新变量

来自分类Dev

根据列R中的部分匹配来创建新变量

来自分类Dev

无法根据R中的均值创建新变量

来自分类Dev

R:根据其他名称相似的变量的选择条件创建多个新变量

来自分类Dev

如何创建基于R中的条件重置的新变量

来自分类Dev

根据其他变量的条件在数据表中创建新变量

来自分类Dev

R根据if条件创建新列

来自分类Dev

根据条件从现有变量创建新变量

来自分类Dev

根据条件在熊猫中创建新列

来自分类Dev

根据在r中包含特定值的其他变量创建一个新变量

来自分类Dev

根据R中其他两个变量之间的数值差异创建新变量

来自分类Dev

根据在r中包含特定值的其他变量创建一个新变量

来自分类Dev

根据多列中的值和相同条件在pandas中创建一个新列

来自分类Dev

awk 根据其他列的条件创建新变量

来自分类Dev

R-根据多个条件和事件时间创建新列

来自分类Dev

根据R中不同列中的条件在分组数据中创建计算变量

来自分类Dev

根据其他两列中的条件在R中创建一个新列

来自分类Dev

熊猫根据其他列中的条件和值创建新列

来自分类Dev

根据条件和最大值在熊猫中创建新行

来自分类Dev

根据熊猫数据框中其他列的条件和值创建新列

来自分类Dev

根据r中的条件计算变量

来自分类Dev

在 Stata 中合并数据库并根据合并数据的身份和值创建新的变量

来自分类Dev

根据类别和NA变量在R中创建二进制变量

来自分类Dev

根据类别和NA变量在R中创建二进制变量

来自分类Dev

根据R中的条件创建重复的行

Related 相关文章

  1. 1

    在R中:如何根据现有变量的条件创建新变量

  2. 2

    在R中创建条件新变量

  3. 3

    R根据行顺序和条件创建组变量

  4. 4

    根据Spark中的窗口和条件创建新列

  5. 5

    在R中创建一个包含条件行和的新变量

  6. 6

    根据列R中的部分匹配来创建新变量

  7. 7

    无法根据R中的均值创建新变量

  8. 8

    R:根据其他名称相似的变量的选择条件创建多个新变量

  9. 9

    如何创建基于R中的条件重置的新变量

  10. 10

    根据其他变量的条件在数据表中创建新变量

  11. 11

    R根据if条件创建新列

  12. 12

    根据条件从现有变量创建新变量

  13. 13

    根据条件在熊猫中创建新列

  14. 14

    根据在r中包含特定值的其他变量创建一个新变量

  15. 15

    根据R中其他两个变量之间的数值差异创建新变量

  16. 16

    根据在r中包含特定值的其他变量创建一个新变量

  17. 17

    根据多列中的值和相同条件在pandas中创建一个新列

  18. 18

    awk 根据其他列的条件创建新变量

  19. 19

    R-根据多个条件和事件时间创建新列

  20. 20

    根据R中不同列中的条件在分组数据中创建计算变量

  21. 21

    根据其他两列中的条件在R中创建一个新列

  22. 22

    熊猫根据其他列中的条件和值创建新列

  23. 23

    根据条件和最大值在熊猫中创建新行

  24. 24

    根据熊猫数据框中其他列的条件和值创建新列

  25. 25

    根据r中的条件计算变量

  26. 26

    在 Stata 中合并数据库并根据合并数据的身份和值创建新的变量

  27. 27

    根据类别和NA变量在R中创建二进制变量

  28. 28

    根据类别和NA变量在R中创建二进制变量

  29. 29

    根据R中的条件创建重复的行

热门标签

归档