Сравнение имен столбцов фрейма данных в R

#r #dataframe #merge #compare

#r #фрейм данных #слияние #Сравнить

Вопрос:

Я пытаюсь сравнить имена столбцов между двумя фреймами данных и изменить столбцы в последнем фрейме данных.

 n = c(0, 1, 0) 
s = c(1, 0, 1)
b = c(1, 1, 1)
a = c(0, 0, 0)
c = c(1,3,2)
df1 = data.frame(n, s, b)
df2 = data.frame(n,s,a,c)
  

Как мне написать синтаксическое сравнение / объединение df1 и df2 таким образом, чтобы выходные данные были следующими:

 df1 output:
  n  s  b
1 0  1  1
2 1  0  1
3 0  1  1

df2 output:
  n  s  b  
1 0  1  0 
2 1  0  0
3 0  1  0
  

Любая помощь приветствуется, спасибо!

Ответ №1:

Мы можем сделать это с помощью intersect и setdiff

 #Drop columns from df2 which are not present in df1
df2 <- df2[intersect(names(df1), names(df2))]

#add columns which are present in df1 but not in df2 and assign it to 0
df2[setdiff(names(df1), names(df2))] <- 0

df2
#  n s b
#1 0 1 0
#2 1 0 0
#3 0 1 0