3

私は値のティブルを持っているとしましょう:

raw = tibble(
    group = c("A", "B", "C", "A", "B", "C"),
    value = c(10, 20, 30, 40, 50, 60)
)

# A tibble: 6 x 2
  group value
  <chr> <dbl>
1     A    10
2     B    20
3     C    30
4     A    40
5     B    50
6     C    60

どのグループに属しているかに応じて、tibble の各値から特定の量を減算したいと考えています。差し引く必要がある金額は、別の tibble にあります。

corrections = tibble(
    group = c("A", "B", "C"),
    corr = c(0, 1, 2)
)

# A tibble: 3 x 2
  group  corr
  <chr> <dbl>
1     A     0
2     B     1
3     C     2

これを達成するための最もエレガントな方法は何ですか? 以下は動作しますが、面倒な気がします - 確かに別の方法がありますか?

mutate(raw, corrected = value - as_vector(corrections[corrections["group"] == group, "corr"]))

# A tibble: 6 x 3
  group value corrected
  <chr> <dbl>     <dbl>
1     A    10        10
2     B    20        19
3     C    30        28
4     A    40        40
5     B    50        49
6     C    60        58
4

1 に答える 1