我有兩個數據幀,它們都共享一個公共ID變量。然而,一個人有超過1000個觀察值,而另一個有大約100個觀察值。下面是他們看起來像的一個例子。如何合併兩個不同大小的數據幀而不重複較小數據幀的情況,R
df1 = data.frame(Id = c(1,1,1,2,2,2,3,3,3), Type1 =
c(1,NA,NA,2,NA,NA,4,NA,NA), Type2= c(1,NA,NA,2,NA,NA,4,NA,NA))
#df1
# Id Type1 Type2
# 1 1 1
# 1 NA NA
# 1 NA NA
# 2 2 2
# 2 NA NA
# 2 NA NA
# 3 4 4
# 3 NA NA
# 3 NA NA
df2 = data.frame(Id = c(1,2,3), Othertypes = c(5,4,6))
#df2
# Id Othertypes
# 1 5
# 2 4
# 3 6
當合並,案件在df12$Othertypes
從更短的數據幀(DF2)被重複,因爲這樣:
df12 <- merge(df1,df2, by ="Id")
#df12
# Id Type1 Type2 Othertypes
# 1 1 1 5
# 1 NA NA 5
# 1 NA NA 5
# 2 2 2 4
# 2 NA NA 4
# 2 NA NA 4
# 3 4 4 6
# 3 NA NA 6
# 3 NA NA 6
不過,我真正想要的是每個ID 1 「Othertypes」 的情況下,作爲這樣的:
#df12
# Id Type1 Type2 Othertypes
# 1 1 1 5
# 1 NA NA NA
# 1 NA NA NA
# 2 2 2 4
# 2 NA NA NA
# 2 NA NA NA
# 3 4 4 6
# 3 NA NA NA
# 3 NA NA NA
我曾嘗試以下辦法:
temp <- merge(df1,df2, by="Id",sort=FALSE)
temp2 <- left_join(df1, df2, by = "Id")
以及data.table
(非常失敗)以及功能使用plyr
(也不成功)。
這不起作用,因爲所有ID必須具有「Othertypes」的值。在這種情況下,Ids 1-9沒有任何價值。 –