Объединение нескольких столбцов с одинаковыми именами в R - PullRequest
3 голосов
/ 22 января 2012

Я хотел бы объединить несколько столбцов фрейма данных в 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 Ответ

4 голосов
/ 22 января 2012

Как подсказывает @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)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...