假设我有以下数据框:
(dat  = data_frame(v1 = c(rep("a", 3), rep("b", 3), rep("c", 4)), v2 = 1:10))
# A tibble: 10 × 2
#       v1    v2
#    <chr> <int>
# 1      a     1
# 2      a     2
# 3      a     3
# 4      b     4
# 5      b     5
# 6      b     6
# 7      c     7
# 8      c     8
# 9      c     9
# 10     c    10
我希望能够做的是计算每个组(即"A","B"和"C")等于之和的总和v2,其中v1是不相等的分组值.所以看起来应该是这样的:
# A tibble: 3 × 2
#      v1   sum
#   <chr> <int>
# 1     a    49
# 2     b    40
# 3     c    21
根据我在网上看到的内容,这看起来像是一份工作do,但我无法理解如何实现这一目标.我认为它看起来像这样:
x %>%
  group_by(v1) %>%
  do(data.frame(sum=sum(.$v2[x$v1 != unique(.$v1)])))
但这只是给了我一个sum等于NA所有三个组的数据帧.我该怎么做呢?
小智 6
也许使用中间列更容易:
dat %>% mutate(total = sum(v2)) %>% group_by(v1) %>% summarize(sum = max(total) - sum(v2))