7
我有兩個數據幀,第一個包含9994行,第二個包含60431行。我想合併兩個數據幀,使合併的數據幀包含兩個數據幀的組合列,但只包含9994行。在R中合併導致比其中一個數據幀更多的行
但是,合併後我得到了超過9994行。我怎樣才能確保這不會發生?
df1 = readRDS('data1.RDS')
nrow(df1)
# [1] 9994
df2 = readRDS('data2.RDS')
nrow(df2)
# [1] 60431
df = merge(df1,df2,by=c("col1","col2"))
nrow(df)
# [1] 10057
df = merge(df1,df2,by=c("col1","col2"),all.x=TRUE)
nrow(df)
# [1] 10057
nrow(na.omit(df))
# [1] 10057
編輯:繼akrun的評論。 是的,有在所述第二數據幀
nrow(unique(df2[,c("col1","col2")]))
# [1] 60263
nrow(df2)
# [1] 60431
我怎樣才能採取只有一排從數據幀,如果有多個用於相同{COL1,COL2}組合重複。當我合併時,我想只有9994行。
你能檢查每個數據集中'col1'和'col2'是否有重複嗎?如果是這種情況,您可以創建一個序列索引,按照每個數據集中的「col1」和「col2」進行分組,並通過「col1」,「col2」和「indx」進行合併。另一種選擇是使用'match'。但是,沒有一個小例子,很難測試 – akrun
@akrun,謝謝akrun。上面我做了一個修改。請參見。我怎樣才能只採取行col1,col2組合,以便結束與合併後的第一個數據幀中的行數? – PepperBoy
您可能需要按照前面的評論創建序列索引。沒有示例數據,測試並不容易。請顯示一些可重複的示例 – akrun