Friday, September 23, 2011

Grouping data.frame by column name pattern in R

This is kind of brutal force solution. First you transpose the data.frame Then use aggregate function Finally transpose back. An example...

x = data.frame(a1=rnorm(10), a2=rnorm(10), b1=rnorm(10), b2=rnorm(10))
g=sapply(colnames(x), function(xx) {strsplit(xx,split='')[[1]][1]})
y = t(aggregate(t(x),by=list(g),mean, simplify=T))
yy = data.frame(y[-1,])
colnames(yy) = y[1,]
rownames(yy) = rownames(x)

No comments:

Post a Comment

Checking font availability on Mac   fc-list : family | grep "Fira Code"   or   system_profiler -json SPFontsDataType | grep \...