2011-09-16 145 views
7

我想cbind兩個數據幀並刪除重複的列。例如:合併兩個數據幀並刪除重複的列

df1 <- data.frame(var1=c('a','b','c'), var2=c(1,2,3)) 
df2 <- data.frame(var1=c('a','b','c'), var3=c(2,4,6)) 

cbind(df1,df2) #this creates a data frame in which column var1 is duplicated 

我想創建與列var1var2var3的數據幀,在該列var2不再重複。

回答

8

merge會做這項工作。

嘗試:

merge(df1, df2) 
+2

有與上述示例不矛盾,但如果var1中存在偏離值,那麼這些案例將被合併刪除;例如嘗試'df2 <-data.frame(var1 = c('a','b','d'),var3 = c(2,4,6))''。這與變量名稱重複的情況相關,但相應的數據不是。 –

1

如果你繼承了別人的數據集,並重複列最終不知何故,想要對付他們,這是一個很好的方式做到這一點:

for (name in unique(names(testframe))) { 
    if (length(which(names(testframe)==name)) > 1) { 
    ## Deal with duplicates here. In this example 
    ## just print name and column #s of duplicates: 
    print(name) 
    print(which(names(testframe)==name)) 
    } 
}