2017-12-27 25 views
0

의 첫 번째 행으로 만 병합 두 데이터 세트를 병합해야하지만 두 번째 데이터 세트에서는 중복 ID (예 : 1,1.1의 여러 ID)가있을 수 있습니다. 중복 ID가있는 경우, 첫 번째 행에 병합하는 방법은 무엇입니까?두 번째 데이터 세트를 R

df1 
structure(list(id = 1:2, y = 10:11), .Names = c("id", "y"), class = "data.frame", row.names = c(NA, 
-2L)) 

df2 
structure(list(id = c(1L, 1L, 1L, 2L), x1 = 435:438, x2 = c(435L, 
436L, 436L, 438L), x3 = c(435L, 436L, 436L, 438L)), .Names = c("id", 
"x1", "x2", "x3"), class = "data.frame", row.names = c(NA, -4L 
)) 

Eaxample :

더 명확하게하기 위해, 여기에 재현 예제 출력에서 ​​나는이 형식을 기대

id y x1 x2 x3 
1 10 435 435 435 
2 11 438 438 438 

즉, 2 및 3 행 (1 ID)은 병합에 참여하지 않습니다.

답변

1

data.table을 사용하면됩니다. 두 번째 데이터 세트에서 id == 1의 첫 번째 발생 만 유지 한 다음 데이터 세트 merge을 유지할 수 있습니다. 여기

는 솔루션입니다 :

library(data.table) 
setDT(df2) 
df2[, idx := 1:.N, by = id] 
df2 <- df2[idx == 1, ] 
df2[, idx := NULL] 
output <- merge(df1, df2, by = "id") 
output 

그것은 당신에게 원하는 출력주지 :

id y x1 x2 x3 
1 1 10 435 435 435 
2 2 11 438 438 438