[R] merging tables based on both row and column names
Frank Schwidom
schwidom at gmx.net
Mon Sep 28 23:23:54 CEST 2015
test1 <- (rbind(c(0.1,0.2),0.3,0.1))
rownames(test1)=c('y1','y2','y3')
colnames(test1) = c('x1','x2');
test2 <- (rbind(c(0.8,0.9,0.5),c(0.5,0.1,0.6)))
rownames(test2) = c('y2','y5')
colnames(test2) = c('x1','x3','x2')
lTest12 <- list( test1, test2)
namesRow <- unique( unlist( lapply( lTest12, rownames)))
namesCol <- unique( unlist( lapply( lTest12, colnames)))
tmp1 <- do.call( cbind, lapply( lTest12, function( x) as.vector( x[ match( namesRow, rownames( x)), match( namesCol, colnames( x))])))
tmp2 <- apply( tmp1, 1, list)
tmp3 <- lapply( tmp2, function( x) x[[1]][ !is.na( x[[1]])])
dimnames1 <- list( namesRow, namesCol)
tmp4 <- array( data= tmp3, dim= sapply( dimnames1, length), dimnames= dimnames1)
paste( tmp4)
[1] "0.1" "c(0.3, 0.8)" "0.1" "0.5" "0.2"
[6] "c(0.3, 0.5)" "0.1" "0.6" "numeric(0)" "0.9"
[11] "numeric(0)" "0.1"
tmp4
x1 x2 x3
y1 0.1 0.2 Numeric,0
y2 Numeric,2 Numeric,2 0.9
y3 0.1 0.1 Numeric,0
y5 0.5 0.6 0.1
Regards.
On 2015-09-28 18:46:18, C Lin wrote:
> Dear R users,
>
> I am trying to merge tables based on both their row names and column names.
> My ultimate goal is to build a distribution table of values for each combination of row and column names.
> I have more test tables, more x's and y's than in the toy example below.
> Thanks in advance for your help.
>
> For example :
> test1 <- data.frame(rbind(c(0.1,0.2),0.3,0.1))
> rownames(test1)=c('y1','y2','y3')
> colnames(test1) = c('x1','x2');
> test2 <- data.frame(rbind(c(0.8,0.9,0.5),c(0.5,0.1,0.6)))
> rownames(test2) = c('y2','y5')
> colnames(test2) = c('x1','x3','x2')
>
> test1
> x1 x2
> y1 0.1 0.2
> y2 0.3 0.3
> y3 0.1 0.1
>
> test2
> x1 x3 x2
> y2 0.8 0.9 0.5
> y5 0.5 0.1 0.6
>
> I would like to combine test1 and test2 such that if the column name and row name are both the same they are combined.
>
> combined_test
> x1 x2 x3
> y1 0.1 0.2 NA
> y2 (0.3,0.8) (0.3,0.5) 0.9
> y3 0.1 0.1 NA
> y5 0.5 0.6 0.1
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>
More information about the R-help
mailing list