2011-09-16 13 views
7

cbindに2つのデータフレームを追加し、重複する列を削除します。たとえば:2つのデータフレームを結合して重複する列を削除する

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 

私は、列var2が繰り返さされていない列var1var2var3、とのデータフレームを作成したいです。

答えて

8

mergeその作業を行います。

試してみてください。

merge(df1, df2) 
+2

問題の例と矛盾していませんが、var1に逸脱している値があれば、それらのケースはmergeで削除されます。例えば'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)) 
    } 
}