2012-01-22 2 views
2

Я хотел бы объединить несколько столбцов кадра данных в R. Учитывая данные, которые выглядят примерно так:Объединение нескольких Тож-именованных столбцов в R

names: 123 256 192 123 256 
     1  2  8  2  3 
     4  3  2  9  9 
     8  7  1  3  8 

Как бы просуммировать элементы тождественно названные столбцы для изготовления таблицы, подобной такой:

names: 123 256 192 
     3  5  8 
     13 12 2 
     11 15 1 

Большое спасибо.

+1

Имея одинаково названные столбцы в data.frame это очень плохая идея: как сделал вы его создаете? . Данные будут легче обрабатывать (с учетом '' reshape2' 'melt' и' dcast', я думаю) до того, как столбцы удвоятся ... –

ответ

4

Как было предложено @VincentZoonekynd, не стоит иметь несколько столбцов с тем же именем.

Во всяком случае, вы могли бы сделать так:

df <- data.frame(A=c(1,4,8),B=c(2,3,7),C=c(8,2,1),D=c(2,9,3),E=c(3,9,8)) 
names(df) <- c('123','256', '192', '123', '256') 

df <- t(df)  # transpose the data.frame 
aggr <- by(df, INDICES=row.names(df), FUN=colSums) # collapse the rows with the same name 
aggr <- as.data.frame(do.call(cbind,aggr)) # convert by() result to a data.frame 

или, в одной строке:

aggr <- as.data.frame(do.call(cbind, by(t(df),INDICES=names(df),FUN=colSums))) 
Смежные вопросы