2017-06-26 12 views
0

私は2つのデータフレームを併合したいと思いますが、どちらも重複キーがあります。 mergeはこれを行うことができないと私に伝えており、私は代替手段を見つけることができません。Many to Many Merge

基本的に、このように、データセット内の各名前のすべての組み合わせの結果が必要です。

name <- c('Jim', 'Jim', 'Kim') 
region <- c('East', 'West', 'North') 
df1 <- data.frame(name, region) 
name <- c('Jim', 'Jim', 'Kim') 
type <- c('Urban', 'Rural', 'Urban') 
df2 <- data.frame(name, type) 

# this doesn't work 
df3 <- merge(df1, df2, by = name, all = TRUE) 

# this is what i want 
want <- data.frame(name = c('Jim', 'Jim', 'Jim', 'Jim', 'Kim'), 
        region = c('East', 'West', 'East', 'West', 'North'), 
        type = c('Urban', 'Urban', 'Rural', 'Rural', 'Urban')) 
+3

を私はあなたが=「名前」で使用する必要があり、マージが非標準の評価を持っているとは思いませんか? 'df3 < - merge(df1、df2、by =" name "、すべて=真)' – platypus

答えて

1

これは動作するはずです:

library(tidyverse) 
df_test <- df2 %>% 
    left_join(df1, by = "name")