2011-09-16 19 views
7

Chcę, aby cbind dwie ramki danych i usunąć zduplikowane kolumny. Na przykład:Połączyć dwie ramki danych i usunąć zduplikowane kolumny

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 

Chcę utworzyć ramkę danych z kolumn var1, var2 i var3, w którym kolumna var2 nie jest powtarzany.

Odpowiedz

8

merge wykona tę pracę.

try:

merge(df1, df2) 
+2

Istnieje nie jest sprzeczne z omawianym przykładem, ale jeśli wystąpią odchylenia wartości w war1, przypadki te zostaną usunięte wraz z scaleniem; na przykład spróbuj 'df2 <-data.frame (var1 = c ('a', 'b', 'd'), var3 = c (2,4,6))'. Jest to istotne w przypadkach, w których nazwy zmiennych są duplikowane, ale dane nie są takie same. –

1

W przypadku dziedziczenia cudzego zestawu danych i skończyć z duplikatów kolumn jakoś i chcą zajmować się nimi, jest to dobry sposób, aby to zrobić:

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)) 
    } 
} 
Powiązane problemy