我有两个表,我试图以特定方式加入。一个是简单的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
和其他技巧,但我没有得到任何地方。
编辑:我应该提到,我想最终包含在一个函数中,所以理想的代码可以灵活适应任何数量的类别。
我现在只是在玩'match'。 – jazzurro
'匹配'功能正是我想不到的......谢谢! – Phil
鉴于这种匹配思想,mutate_at(vars(A:D),funs(color = Colors [match(。,Category)]))'是修改我的想法的方法,不是吗? – jazzurro