私は特別な方法で結合しようとしている2つのテーブルを持っています。一つは、それが関連付けられているHEXの色とそのカテゴリを提供する単純なtibbleです:条件に基づいてあるテーブルから別のテーブルに値を追加する
library(tibble)
library(dplyr)
colors <- tibble(Category = c("A", "B", "C", "D"),
Colors = c("#0079c0", "#cc9900", "#252525", "#c5120e"))
# A tibble: 4 × 2
Category Colours
<chr> <chr>
1 A #0079c0
2 B #cc9900
3 C#252525
4 D #c5120e
私は、行と列とカテゴリの両方を示しています別のtibbleがあり、それらは特定の方法で表示されます。
Main_Table <- tibble(Category = c("A", "B", "C", "D"),
A = c(NA, "A", NA, NA),
B = c(NA, NA, NA, NA),
C = c(NA, "C", NA, NA),
D = c("D", "D", NA, NA))
# A tibble: 4 × 5
Category A B C D
<chr> <chr> <lgl> <chr> <chr>
1 A <NA> NA <NA> D
2 B A NA C D
3 C <NA> NA <NA> <NA>
4 D <NA> NA <NA> <NA>
対応するカテゴリがその名前を保持する変数の下に存在するかどうかに基づいて、メインテーブルに色を追加したいとします。たとえば、のは、私は、カテゴリD'sの色が含まれるようにしたい場合は、私は以下で終わるだろうと言ってみましょう:
Main_Table_Goal <- tibble(Category = c("A", "B", "C", "D"),
A = c(NA, "A", NA, NA),
B = c(NA, NA, NA, NA),
C = c(NA, "C", NA, NA),
D = c("D", "D", NA, NA),
color = c("#c5120e", "#c5120e", NA, NA))
# A tibble: 4 × 6
Category A B C D color
<chr> <chr> <lgl> <chr> <chr> <chr>
1 A <NA> NA <NA> D #c5120e
2 B A NA C D #c5120e
3 C <NA> NA <NA> <NA> <NA>
4 D <NA> NA <NA> <NA> <NA>
どのように私はdplyr
を使ってこれを実現するのですか?私は*_join
と他のトリックで試してきましたが、私はどこにもいませんでした。
編集:私は最終的にこれを関数に含めることを言及しておきたいので、理想的には任意の数のカテゴリに対応するためにコードを柔軟にすることができます。
私はちょうど 'match'で遊んでいました。 – jazzurro
'match'関数はまさに私を逃していたものです...ありがとう! – Phil
このマッチのアイデアを考えると、 'mutate_at(vars(A:D)、funs(color = Colors [match(。、Category)]))は私の考えを改訂する方法ですね。 – jazzurro