2017-12-18 2 views
0

두 개의 데이터 세트를 R에 병합하려고합니다. 첫 번째 데이터 집합은 AcademicData이고 다른 하나는 Mathsdata입니다. 데이터 세트를 병합 할 때 수천 개의 중복 행이 생깁니다. 여기에 코드의 그림과 결과로 나타나는 합병 테이블이 total이라고합니다. 변수 "gender"로 데이터 세트를 병합하려고합니다.중복 값을 가져 오지 않고 R을 사용하여 두 개의 데이터 세트를 병합하는 방법은 무엇입니까?

코드를 수정하십시오.

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

각 첫 번째 데이터 세트의 이미지를 강조 표시합니다. Academic Dataset 두 번째 데이터 집합의 이미지가 여기에 표시됩니다. MathsData

total이라는 테이블에 중복 행을 만들지 않고 두 데이터 세트를 성별로 병합하고 싶습니다.

+1

코드 사진을 게시하지 마십시오. [R에서 훌륭한 재현 가능한 예제 만들기] (https://stackoverflow.com/a/5963610/4421870) – Mako212

+0

나는 당신이 원하는 것에 대해 더 구체적으로 생각해야한다고 생각합니다. 보이는 출력. Gender는 두 데이터 세트에서 고유 한 ID 변수가 아니므로 병합은 기본적으로 다음과 같이 말합니다. MathsData의 모든 행에 대해 AcademicData에서 일치하는 모든 행에 해당 행을 지정합니다. 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] 

, 나는 코드를 테스트 할 수 있습니다. 그러나 나는 이것이 잘 작동 할 것이라고 생각한다.

관련 문제