如何根据因子对变量求和?

时间:2016-05-06 16:15:19

标签: r dplyr

以下是我的数据示例:

Type <- c('A','A','A','A','B','B','C','D')
Name <- c('DK', 'MO', 'OM', 'LSO', 'GOP', 'ADG','BFC','TMD')
Value <- c(3,2,5,3,6,5,7,6)
Dat <- data.frame(Type, Name,Value)
Dat
  Type Name Value
1    A   DK     3
2    A   MO     2
3    A   OM     5
4    A  LSO     3
5    B  GOP     6
6    B  ADG     5
7    C  BFC     7
8    D  TMD     6

我想要得到的是Type = A时的值的总和。在这种情况下,它是13。我通过应用dplyr找到了一些类似的例子,但我不需要类型和名称。请帮助,谢谢!

1 个答案:

答案 0 :(得分:1)

使用dplyr,您可以使用group_by对每种类型进行分组,或者如果您只想要类型A,则可以过滤Type == A。然后在两种情况下,您将按值的总和进行汇总。我在下面展示了两个例子。

    library(dplyr)

    Type <- c('A','A','A','A','B','B','C','D')
    Name <- c('DK', 'MO', 'OM', 'LSO', 'GOP', 'ADG','BFC','TMD')
    Value <- c(3,2,5,3,6,5,7,6)
    Dat <- data.frame(Type, Name,Value)
    Dat

    res1 <- Dat %>%
      group_by(Type) %>%
      summarize(sum(Value))
    res1
#    Source: local data frame [4 x 2]
#
#    Type sum(Value)
#  (fctr)      (dbl)
#1      A         13
#2      B         11
#3      C          7
#4      D          6

    res2 <- Dat %>%
      filter(Type == "A") %>%
      summarize(sum(Value))
    res2
#  sum(Value)
#1         13