일반적인 열 (sys_loc_code)을 공유하는 두 개의 데이터 프레임이 있습니다. 첫 번째 데이터 프레임 (df1)에는 1033 개의 행이 있습니다. 두 번째 데이터 프레임 (df2)에는 2751이 있습니다.결합 및 병합이 올바른 행 수를 반환하지 않습니다.
df1과 df2를 결합하여 df1에서 df1과 df2의 모든 열을 유지하면서 새 데이터 프레임을 얻고 싶습니다.
내가join
을 시도
, left_join
및 inner_join
(dplyr
)에서 간단한 merge
. 이들 각각은 2057 개의 행을 반환하며, 이는 단지 df1
에있는 것과 일치하도록 1033을 반환해야한다고 생각합니다. df1에서 행만 반환하려면 어떻게해야합니까?
이 문제를 일으킨 데이터 세트를 공유 할 수 없습니다. 그러나 상담 조금 후에, 나는이 최소한의 예와 함께 문제를 다시 만들 수 있습니다 :
df1 <-
data.frame(
sys_loc_code = c("A", "B", "C")
, df1Val = 1
)
df2 <-
data.frame(
sys_loc_code = c("A", "B", "B", "C", "D")
, df2Val = c(1, 1, 2, 1, 1)
)
left_join(df1, df2)
반환 4 개 행을 df1
은 세 개의 행이있다.
막기 위해 일치하는 선택
filter
을 사용할 수 있습니다. df1에서 갖고 싶은 df2에서 찾은 열을 채우기 위해 조회 테이블이나 다른 것을 사용하려고하는 것이 좋습니다. –그것은 당신의 목표에 달려 있습니다. 나는 aggregate, first, 또는 특정 엔트리를 원하는지에 따라'df2 %> % group_by (sys_loc_code)'와'summarize','slice','filter'를 사용하고,'left_join'을 결과. –