2017-05-19 3 views
0

を使用して参加した後、私は」、結果のファイルは、「cluster_2」を持っていない上記の2つのデータフレームをマージした後保持列くれ

check_store_count<- merge(x = agg_cluster_sku_str_cnt_1, y = agg_cluster_sku_str_cnt_2, by.x = c("cluster_1","sku_1"), 
          by.y = c("cluster_2", "sku_2") , All = TRUE) 

以下のコードを使用して2つのデータフレームをマージしています「sku_2」フィールド。どのように私は結果でそれらを取得する必要がありますか?

答えて

0

mergeはこのように動作するように設計されています。列が一致する行を検索し、一致しない新しい行を作成します。 all = TRUEを設定すると、2つのデータフレームに対して外部結合が行われます。

df1 <- data.frame(a1 = c(1,2,3), 
       b1 = c("a","b","c"), 
       c1 = c(4,5,6)) 


df2 <- data.frame(a2 = c(1,2,4), 
       b2 = c("c","b","d"), 
       c2 = c(7,8,9)) 

merge(x = df1, 
    y = df2, 
    by.x = c("a1", "b1"), 
    by.y = c("a2", "b2"), 
    all = TRUE) 

# a1 b1 c1 c2 
# 1 1 a 4 NA 
# 2 1 c NA 7 
# 3 2 b 5 8 
# 4 3 c 6 NA 
# 5 4 d NA 9 

列を複製して、byリストの複製を残すことができます。

library(dplyr) 
df2 <- df2 %>% 
    mutate(a2_dup = a2, 
     b2_dup = b2) 

merge(x = df1, 
     y = df2, 
     by.x = c("a1", "b1"), 
     by.y = c("a2", "b2"), 
     all = TRUE) 

# a1 b1 c1 c2 a2_dup b2_dup 
# 1 1 a 4 NA  NA <NA> 
# 2 1 c NA 7  1  c 
# 3 2 b 5 8  2  b 
# 4 3 c 6 NA  NA <NA> 
# 5 4 d NA 9  4  d 
関連する問題