Используя функцию merge
и ее необязательные параметры:
Внутреннее соединение: merge(df1, df2)
будет работать для этих примеров, поскольку R автоматически присоединяется к кадрам по именам общих переменных , но вы, скорее всего, захотите указать merge(df1, df2, by = "CustomerId")
, чтобы убедиться, что вы соответствуете только по желаемым полям. Вы также можете использовать параметры by.x
и by.y
, если соответствующие переменные имеют разные имена в разных кадрах данных.
Внешнее соединение: merge(x = df1, y = df2, by = "CustomerId", all = TRUE)
Левый внешний: merge(x = df1, y = df2, by = "CustomerId", all.x = TRUE)
Правый внешний: merge(x = df1, y = df2, by = "CustomerId", all.y = TRUE)
Крест: merge(x = df1, y = df2, by = NULL)
Как и с внутренним соединением, вы, вероятно, захотите явно передать «CustomerId» в R в качестве сопоставимой переменной. Я думаю, что почти всегда лучше указывать идентификаторы, с которыми вы хотите объединиться; это безопаснее, если входные данные.кадры меняются неожиданно и легче читать позже.
Вы можете объединить несколько столбцов, указав by
вектор, например, by = c("CustomerId", "OrderId")
.
Если имена столбцов для слияния не совпадают, вы можете указать, например, by.x = "CustomerId_in_df1",
by.y = "CustomerId_in_df2" where
CustomerId_in_df1 is the name of the column in the first data frame and
CustomerId_in_df2` - это имя столбца во втором кадре данных. (Они также могут быть векторами, если вам нужно объединить несколько столбцов.)