что произойдет, если мы объединим несколько наборов данных без by defined

#r #merge

#r #слияние

Вопрос:

как R будет обрабатывать слияние, если by не определен. Для других языков, кажется, требуется by , но в r, похоже, мы можем это сделать new_df<-merge(df1, df2) . какое слияние мы получим от этого? это то же самое , что и то , что мы определяем by= ? Действительно ли нам нужно выяснить, какую переменную величину нам нужно использовать для by? или R достаточно умен и выберет один из них для нас?

Комментарии:

1. По умолчанию merge() будут использоваться все столбцы с одинаковыми именами в обоих фреймах данных.

Ответ №1:

смотрите справку ( ?base::merge ): по умолчанию, by = intersect(names(x), names(y)) — т.е. Он будет искать имена столбцов, общие для двух фреймов данных

Ответ №2:

Если вы это сделаете new_df <- merge(df1, df2) , выполняется внутреннее объединение, и by по умолчанию выбирается как общие имена столбцов столбцов в df1 и df2 .

Вы можете найти эти спецификации в ?merge .

 merge(x, y, by = intersect(names(x), names(y)),
      by.x = by, by.y = by, all = FALSE, all.x = all, all.y = all,
      sort = TRUE, suffixes = c(".x",".y"), no.dups = TRUE,
      incomparables = NULL, ...)
 

Так что по умолчанию by intersect(names(x), names(y)) . Также это указано в Details разделе .

По умолчанию фреймы данных объединяются по столбцам с именами, которые они оба имеют