需要R函数来比较一个文件中缺少的值和另一个文件中的更新

需要R函数来比较一个文件中缺少的值和另一个文件中的更新,r,function,dataframe,R,Function,Dataframe,我有3个csv文件,读作df df1 - Code Number A 12 B 13 C 14 D 15 E 16 F 17 G 18 df2只包含代码。这些代码是强制性代码,必须出现在df1中。如果df1中缺少df2中的任何代码,则应将其添加到df1中,并从df3更新其相应的“编号”列 dF2 - Code A B C X df3 Code Number A 22 B 34 C 56 D

我有3个csv文件,读作df

df1 - 

Code Number 
A     12
B     13
C     14 
D     15
E     16
F     17
G     18
df2只包含代码。这些代码是强制性代码,必须出现在df1中。如果df1中缺少df2中的任何代码,则应将其添加到df1中,并从df3更新其相应的“编号”列

dF2 - 
Code 
A
B
C
X
df3
Code Number 
A     22
B     34
C     56 
D     78
X     99
Y     100
这里缺少来自df2的X。因此,应该将其添加到df1,并从df3中提取其编号

dF2 - 
Code 
A
B
C
X
df3
Code Number 
A     22
B     34
C     56 
D     78
X     99
Y     100
输出-

df1 - 

Code Number 
A     12
B     13
C     14 
D     15
E     16
F     17
G     18
X     99
我有代码,这是工作良好,以满足这个条件

然而,我希望一切都通过一个函数来完成

我的功能应该是这样的-

If any code present in df2 is missing in df1 then
{
i) get that code from df2
ii) get the number for that code from df3

iii) append that code and number to df1.

} else {
  df1<-df1 

}
如果df2中存在的任何代码在df1中丢失,则
{
i) 从df2获取该代码
ii)从df3获取该代码的编号
iii)将该代码和编号附加到df1。
}否则{
df1%
选择(-c(count.x,count.y))

df1执行此任务不需要循环。更快的方法是使用如下所示的合并函数:

# sample data
df1 <- data.table(code=c('A','B','C'), Number=c(10,20,30))
df2 <- data.table(code =  c('A','B','X'))
df3 <- data.table(code=c('A','X','C'), Number=c(10,200,30))

# join df1 and df2 - full join
df_temp <- merge(df1, df2, by = "code", all = TRUE)

# join again df1 and df3 - full join
df4 <- merge(df_temp, df3, by = "code", all = TRUE)

# fill missing value

fill_values <- function(x){

  if(is.na(x['Number.x'])) return(x['Number.y'])
  else return (x['Number.x'])

}

df4$Number <- apply(df4, 1, fill_values)

# select final columns
df4 <- df4[,c('code','Number'),with=F]
print(df4)

   code Number
1:    A     10
2:    B     20
3:    C     30
4:    X    200
#示例数据

df1该代码工作正常。但是它将df3中的所有代码及其值插入df1中。我希望插入df1中缺少的df2中的代码,并从df3中提取其编号。