2017-12-18 1 views
0

私は2つのデータセットをRにマージしようとしています。最初のデータセットはAcademicDataと呼ばれ、もう1つはMathsdataと呼ばれます。私がデータセットをマージすると、何千もの重複した行があります。ここでは、コードの図と結果のマージテーブルをtotalと呼んでいます。変数 "gender"でデータセットをマージしようとしています。重複する値を取得せずにRを使用して2つのデータセットをマージするにはどうすればよいですか?

コードを強調します。

setwd("H:/Data application/x14484252-DAD Project") 

MathsData <- read.csv("Math-Students.csv", header=T, na.strings=c(""), 
    stringsAsFactors = T) 

AcademicData <- read.csv("Academic-Performance.csv", header=T, 
    na.strings=c(""), stringsAsFactors = T) 

total <- merge(MathsData, AcademicData, by="gender", all.x=TRUE) 

イメージからわかるように、合計と呼ばれる表のマージで作成された行は93,435行あります。 Table

各1番目のデータセットの画像をExcelで表示します。 ここでは、2番目のデータセットのイメージがExcelにあります。

totalというテーブルに重複する行が作成されることなく、2つのデータセットを性別でマージしたいとします。

+1

コードの画像は投稿しないでください。[Rで素晴らしい再生可能な例を作成する](https://stackoverflow.com/a/5963610/4421870) – Mako212

+0

私はあなたが望むものについてより具体的に考える必要があると思います見えるように出力。 Genderはどちらのデータセットでも一意のID変数ではないため、マージは基本的に次のようになっています:MathsDataのすべての行に対して、AcademicDataの一致する行ごとに対応する行を指定します。アカデミックデータに100人の女の子と200人の男の子がいる場合、MathsDataにマージされた女の子は100行、男の子は200行になります。詳細については、[R for Data Science](http://r4ds.had.co.nz/relational-data.html#mutating-joins)には、さまざまな結合がどのように見えるかといういくつかの良いイメージがあります。 –

答えて

0

あなたはこれを行うことができます:あなたが再現可能なデータを提供していませんでしたので

library(data.table) 
setDT(MathsData); setDT(AcademicData) 
MathsData[AcademicData, mult = "first", on = "gender", nomatch=0L] 

、私はコードをテストすることができませんでした。しかし、私はこれがうまくいくと思います。

関連する問題