Como juntar (mesclar) quadros de dados (interno, externo, esquerdo, direito)?

Dados dois quadros de dados:

df1 = data.frame(CustomerId = c(1:6), Product = c(rep("Toaster", 3), rep("Radio", 3)))
df2 = data.frame(CustomerId = c(2, 4, 6), State = c(rep("Alabama", 2), rep("Ohio", 1)))

df1
#  CustomerId Product
#           1 Toaster
#           2 Toaster
#           3 Toaster
#           4   Radio
#           5   Radio
#           6   Radio

df2
#  CustomerId   State
#           2 Alabama
#           4 Alabama
#           6    Ohio

Como posso fazer o estilo do banco de dados, ou seja,estilo sql, une? Isto é, como obtenho:

Ajunção interna dodf1 edf2:
Retorna apenas as linhas nas quais a tabela da esquerda tem chaves correspondentes na tabela da direita.Ajunção externa dodf1 edf2:
Retorna todas as linhas das duas tabelas, associa registros da esquerda que possuem chaves correspondentes na tabela da direita.A junção externa esquerda (ou simplesmente junção esquerda) dodf1 edf2
Retorna todas as linhas da tabela da esquerda e todas as linhas com as chaves correspondentes da tabela da direita.A junção externa direita dodf1 edf2
Retorna todas as linhas da tabela da direita e todas as linhas com as chaves correspondentes da tabela da esquerda.

Crédito extra:

Como posso fazer uma instrução de seleção de estilo SQL?

questionAnswers(13)

yourAnswerToTheQuestion