Если вы хотите попробовать без пакета и обычной вложенной функции слияния, это может быть конус как:
Data :
table1<-data.frame(NAME=c("a","b","c"), A1=c(1,2,3))
table2<-data.frame(NAME=c("a","b","d"),A2=c(10,20,30))
table3<-data.frame(NAME=c("a","b","e"),A3=c(100,200,400))
Code:
final_data<-merge( merge( table1, table2, by = "NAME", all = TRUE ), table3,
by = "NAME", all = TRUE )
ВЫВОД:
NAME A1 A2 A3
1 a 1 10 100
2 b 2 20 200
3 c 3 NA NA
4 d NA 30 NA
5 e NA NA 400
не заменять na
на 0 с использованием простого синтаксиса
final_data[is.na(final_data)]<-"0"
ВЫВОД:
NAME A1 A2 A3
1 a 1 10 100
2 b 2 20 200
3 c 3 0 0
4 d 0 30 0
5 e 0 0 400
@ Ashok KS упомянул некоторый код, и его также можно записать как
data<- reshape::merge_recurse(list(table1, table2,table3))
data[is.na(data)]<-0