【发布时间】:2016-12-04 14:46:32
【问题描述】:
我有两个表,我正试图以特定方式加入。一个是提供 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 类的颜色,我最终会得到以下结果:
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 和其他技巧,但我没有得到任何结果。
编辑:我应该提到我希望最终将它包含在一个函数中,因此理想情况下代码可以灵活地容纳任意数量的类别。
【问题讨论】: