2017-12-12 3 views
1

私が持っている2つのデータフレーム R - 行方不明で、注文の行のうちの2つのデータフレームを組み合わせ

merge_test_1 = t(data.frame("cats" = 1, "dogs" = 2, "horses" = 4)) 
merge_test_2 = t(data.frame("horses" = 1, "dogs" = 3, "rabbits" = 2)) 

彼らは次のようになります。彼らはすべての行名を持っていない

 [,1] 
cats  1 
dogs  2 
horses 4 

     [,1] 
horses  1 
dogs  3 
rabbits 2 

注方法彼らが共有しているものもまた別の順序になっています。私は、結果としてこのような何かを得るように、それらを一緒に結合したいと思います。最後のデータフレーム内

 [,1] [,2] 
cats  1  0 
dogs  2  3 
horses 4  1 
rabbits 0  2 

順序は限りそれらが適切に組み合わされて、あまり重要ではありません。私は "マージ"コマンドを使用してみましたが、私はそれを理解できませんでした。

+0

あなたのデータフレームに変数として行名を保存するようにしてください。 – AntoniosK

+0

正確にはどういう意味ですか? – dain

+0

希望の出力を得るには、何か(1つまたは複数の変数)に参加する必要があります。ここでは、値とは別の変数はありません。したがって、行名を使用して作成する必要があります。 'merge'コマンドは' by = 'オプションをマージする必要があります... – AntoniosK

答えて

3

(私は変数にrownamesの移動の前のコメントに同意するが、あなたはこれを行うだけベースRの機能を使用しないことを好むだろう場合は、次のコードは動作するはずです一致しないセルは0の代わりにNAになります)。

merge_test_1 = t(data.frame(cats = 1, dogs = 2, horses = 4)) 
merge_test_2 = t(data.frame(horses = 1, dogs = 3, rabbits = 2)) 
merge(merge_test_1, merge_test_2, by = 0, all = TRUE) 
#> Row.names V1.x V1.y 
#> 1  cats 1 NA 
#> 2  dogs 2 3 
#> 3 horses 4 1 
#> 4 rabbits NA 2 
3


library(dplyr) 
merge_test_1 = t(data.frame(cats = 1, dogs = 2, horses = 4)) %>% as.data.frame() 
merge_test_2 = t(data.frame(horses = 1, dogs = 3, rabbits = 2)) %>% as.data.frame() 

# change row names into actual column 
merge_test_1 <- tibble::rownames_to_column(merge_test_1) 
merge_test_2 <- tibble::rownames_to_column(merge_test_2) 

df <- full_join(merge_test_1, merge_test_2, by = "rowname") 

# change NAs to 0 
df[is.na(df)] <- 0 

df 
#> rowname V1.x V1.y 
#> 1 cats 1 0 
#> 2 dogs 2 3 
#> 3 horses 4 1 
#> 4 rabbits 0 2 
関連する問題