使用tidyr::unite合并三个数据集



我有3个数据像这个

D1

Name  Item  January Type
E001  Phone  45.6    T
S253  Car    765.7   -
Q78   Wood   65.1    T

D2

Name  Item   March  May  Type
E001  Phone  5.6    23    F
S253  Car    65.7   78    F
Q78   Wood   5.1    965   -

D3-

Name  Item   Type
E001  Phone  A
S253  Car    A
Q78   Wood   A

并且需要像这个一样的输出

Name  Item  January March   May     Type
E001  Phone  45.6    5.6     23    T/F/A
S253  Car    765.7   65.7    78    -/F/A
Q78   Wood   65.1    5.1     965   T/-/A

为此,我尝试了这个命令

merge(D1,D2,D3, by = c("Name","Item"))#%>% tidyr::unite(type, dplyr::starts_with("Type"), sep = "/", na.rm = TRUE)

但这并没有达到的目的

这将起作用:

library(dplyr)
library(tidyr)
D1 <- 
data.frame(
Name = c("E001", "S253"),
Item = c("Phone", "Car"),
January = c(45.6, 765),
Type = c("T", "-")
)
D2 <- 
data.frame(
Name = c("E001", "S253"),
Item = c("Phone", "Car"),
March = c(424, 465),
May = c(49, 76),
Type = c("F", "F")
)
D3 <- 
data.frame(
Name = c("E001", "S253"),
Item = c("Phone", "Car"),
Type = c("A", "A")
)
D1 %>%
left_join(D2, by = c("Name", "Item")) %>%
left_join(D3, by = c("Name", "Item")) %>%
unite("Type", starts_with("Type"), sep = "/")

最新更新