合并R中的多个相同名称的列

bac*_*bac 3 r

我想在R中合并数据帧的多个列。给定的数据看起来像这样:

names: 123   256   192   123   256
       1     2     8     2     3
       4     3     2     9     9
       8     7     1     3     8 
Run Code Online (Sandbox Code Playgroud)

我将如何对同名列的元素求和以产生一个像这样的表:

names: 123   256   192
       3     5     8
       13    12    2
       11    15    1
Run Code Online (Sandbox Code Playgroud)

非常感谢你。

dig*_*All 5

正如@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
Run Code Online (Sandbox Code Playgroud)

或者,一行:

aggr <- as.data.frame(do.call(cbind, by(t(df),INDICES=names(df),FUN=colSums)))
Run Code Online (Sandbox Code Playgroud)