2014-12-18 2 views
0

Я использую функцию сильфона для сравнений между уровнями группы с pairwise.wilcox.test:Соединить кадры данных по горизонтали в пределах цикла в R

pairwise.wilcox <- function(data, x, factor) { 
    require(reshape2) 
    pw <- data.frame() 
    for(i in x){ 
     pw <- pairwise.wilcox.test(data[ ,i], factor, p.adj = "bonf") 
     #pairwise.wilcox.test output is reformatted 
     pw <- melt(pw[[3]]) 
     #the first two columns of the reformatted output are merged 
     pw$Var1 = paste(pw$Var2, pw$Var1, sep=" - ") 
     #the second column is dropped 
     drops <- c("Var2") 
     pw <- pw[,!(names(pw) %in% drops)] 
     colnames(pw) <- c("Compared groups", "p-value") 
     print(pw) 
    } 
} 

pairwise.wilcox(tabel2, c(2:4), tabel2$lot) 

Это отрывок выхода:

Compared groups p-value 
1  1StL - 3StL  1 
2  1StL - IP  1 
3  1StL - ISR  1 
4  1StL - ISU  1 
5  1StL - StM  1 
6  3StL - 3StL  NA 
7  3StL - IP  1 
... 
    Compared groups p-value 
1  1StL - 3StL 1,0000000 
2  1StL - IP 0,1092484 
3  1StL - ISR 1,0000000 
4  1StL - ISU 1,0000000 
5  1StL - StM 1,0000000 
6  3StL - 3StL  NA 
7  3StL - IP 1,0000000 
... 
    Compared groups p-value 
1  1StL - 3StL  1 
2  1StL - IP  1 
3  1StL - ISR  1 
4  1StL - ISU  1 
5  1StL - StM  1 
6  3StL - 3StL  NA 
7  3StL - IP  1 
... 

То, что я хочу, чтобы сцепить по горизонтали эти кадры данных по общему первому столбцу, так что в результате выводится выглядит следующим образом:

Compared groups p-value p-value p-value 
1  1StL - 3StL  1 1,0000000  1 
2  1StL - IP  1 0,1092484  1 
3  1StL - ISR  1 1,0000000  1 
4  1StL - ISU  1 1,0000000  1 
5  1StL - StM  1 1,0000000  1 
6  3StL - 3StL  NA  NA  NA 
7  3StL - IP  1 1,0000000  1 
... 

Как это сделать? Имейте в виду, что у меня больше переменных.

Мой набор данных (не все данные):

structure(list(lot = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 
6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 
6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 
6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 
6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 
6L, 6L, 6L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 5L, 5L, 5L, 5L, 5L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L), .Label = c("1StL", 
"3StL", "IP", "ISR", "ISU", "StM"), class = "factor"), RS.5_1 = c(2, 
3, 3, 2, 2, 2, 2, 3, 1, 1, 2, 3, 3, 2, 2, 1, 3, 2, 3, 2, 3, 1, 
3, 1, 3, 2, 3, 2, 2, 2, 2, 3, 3, 2, 2, 3, 2, 3, 2, 2, 2, 3, 3, 
3, 3, 2, 3, 3, 3, 2, 2, 2, 2, 3, 2, 3, 3, 2, 2, 1, 3, 2, 2, 3, 
2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 2, 1, 3, 3, 3, 3, 3, 3, 1, 1, 3, 
2, 1, 2, 3, 2, 2, 3, 3, 3, 2, 3, 1, 3, 2, 2, 1, 1, 3, 2, 1, 3, 
1, 2, 2, 3, 2, 3, 2, 2, 2, 1, 3, 1, 2, 1, 1, 2, 2, 2, 3, 2, 2, 
2, 1, 3, 3, 1, 1, 2, 2, 2, 3, 1, 2, 2, 2, 1, 2, 2, 1, 3, 3, 3, 
2, 2, 2, 3, 2, 1, 2, 3, 3, 1, 1, 2, 2, 2, 3, 1, 1, 1, 2, 3, 2, 
2, 3, 2, 2, 3, 3, 3, 1, 3, 3, 1, 2, 3, 3, 3, 1, 3, 3, 3, 3, 1, 
3, 1, 3, 1, 2, 3, 3, 2, 3, 3, 1, 3, 2, 3, 3, 3, 2, 3, 3, 3, 3, 
3, 3, 3, 3, 3, 3, 2, 3, 3, 3, 2, 2, 1, 3, 2, 3, 2, 2, 2, 1, 3, 
3, 3, 1, 2, 3, 1, 1, 3, 3, 3, 2, 2, 1, 1, 2, 3, 1, 1, 2, 1, 1, 
2, 3, 3, 3, 1, 2, 3, 2, 2, 2, 2, 3, 3, 1, 1, 3, 3, 2, 2, 2, 1, 
3, 2, 2, 2, 2, 1, 3, 2, 2, 3, 3, 3, 1, 3, 2, 3, 2, 2, 2, 3, 2, 
3, 3, 2, 2, 2, 1, 2, 2, 2, 2, 2, 3, 2, 1, 2, 2, 1, 3, 2, 2, 2, 
3, 3, 2, 1, 2, 1, 2, 3, 3, 2, 3, 3, 2, 1, 3, 1, 2, 2, 2, 3, 1, 
2, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 2, 1, 2, 2, 3, 1, 3, 1, 3, 3, 
3, 3, 3, 3, 2, 3, 3, 3, 2, 1, 1, 1, 3, 1, 1, 1, 3, 2, 2, 2, 3, 
3, 1, 3, 1, 2, 1, 1, 3, 3, 3, 2, 1, 1, 1, 2, 3, 1, 3, 3, 3, 2, 
3, 2, 2, 2, 1, 2, 2, 2, 1, 1, 1, 2, 2, 3, 3, 2, 2, 2, 1, 1, 1, 
3, 3, 3, 3, 3, 2, 3, 3, 1, 1, 3, 2, 2, 2, 3, 1, 3, 2, 3, 3, 3, 
2, 2, 3, 1, 2, 3, 3, 2, 3, 2, 3, 3, 3, 2, 2, 1, 3, 2, 3, 3, 2, 
3, 3, 3, 2, 1, 3, 3, 1, 1, 3, 1, 3, 3, 3, 3, 1, 2, 3, 2, 3, 2, 
3, 1, 3, 2, 2, 2, 2, 2, 1, 2, 1, 3, 2, 2, 2, 3, 2, 2, 2, 2, 2, 
1, 2, 3, 3, 3, 3, 2, 2, 3, 1, 2, 3, 2, 1, 3, 2, 3, 3, 3, 3, 3, 
3, 3, 3, 3, 1, 3, 1, 3, 3, 3, 3, 3, 2, 2, 1, 3, 3, 3, 3, 2, 3, 
3, 3, 2, 2, 3, 2, 1, 3, 1, 1, 2, 2, 3, 3, 3, 3, 2, 2, 3, 2, 2, 
2, 2, 2, 1, 3, 1, 2, 3, 1, 3, 3, 2, 2, 3), RS.5_2 = c(2, 2, 3, 
3, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 2, 3, 2, 1, 1, 2, 2, 2, 1, 
2, 1, 2, 2, 1, 1, 3, 2, 2, 2, 2, 1, 1, 1, 1, 2, 2, 1, 1, 2, 1, 
1, 3, 3, 1, 1, 2, 2, 1, 1, 3, 2, 1, 2, 1, 1, 2, 2, 1, 1, 1, 2, 
2, 1, 3, 3, 2, 1, 1, 1, 2, 2, 2, 2, 3, 2, 3, 1, 1, 1, 1, 2, 1, 
2, 2, 2, 2, 1, 1, 1, 1, 3, 1, 1, 2, 2, 1, 2, 1, 1, 1, 2, 2, 1, 
1, 3, 2, 1, 1, 1, 1, 1, 2, 1, 3, 2, 2, 1, 1, 1, 2, 2, 1, 1, 2, 
3, 1, 2, 2, 1, 1, 2, 3, 1, 2, 2, 2, 1, 2, 1, 1, 2, 3, 1, 1, 1, 
1, 3, 2, 2, 3, 3, 3, 2, 1, 1, 1, 1, 2, 2, 2, 2, 3, 2, 2, 2, 1, 
1, 1, 3, 1, 2, 2, 1, 3, 1, 2, 1, 2, 3, 1, 1, 3, 1, 2, 3, 1, 2, 
3, 1, 3, 3, 2, 2, 1, 3, 1, 1, 1, 2, 2, 3, 1, 1, 2, 1, 1, 1, 1, 
1, 1, 2, 2, 2, 2, 1, 1, 1, 3, 1, 1, 2, 3, 1, 3, 1, 1, 1, 3, 3, 
1, 1, 1, 1, 1, 2, 2, 3, 2, 1, 1, 3, 2, 3, 1, 2, 2, 2, 2, 2, 3, 
1, 1, 2, 3, 3, 2, 1, 1, 1, 3, 3, 2, 2, 1, 1, 1, 1, 1, 1, 1, 2, 
2, 2, 2, 2, 1, 1, 1, 2, 2, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 2, 1, 
1, 1, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 2, 2, 2, 3, 2, 1, 1, 1, 2, 
2, 2, 1, 2, 1, 1, 1, 2, 2, 3, 2, 2, 3, 2, 3, 2, 2, 2, 1, 2, 1, 
1, 3, 1, 2, 1, 2, 3, 1, 1, 1, 2, 2, 3, 3, 1, 3, 1, 2, 3, 2, 3, 
2, 1, 1, 1, 3, 1, 3, 2, 2, 2, 3, 1, 1, 1, 1, 1, 3, 3, 3, 3, 1, 
2, 1, 1, 2, 2, 1, 2, 2, 1, 2, 1, 1, 1, 3, 1, 3, 3, 3, 1, 3, 2, 
1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 3, 3, 1, 1, 2, 1, 1, 2, 3, 2, 
3, 3, 3, 2, 2, 1, 1, 2, 1, 3, 2, 3, 3, 2, 3, 1, 3, 3, 3, 2, 2, 
3, 1, 2, 3, 3, 2, 3, 1, 3, 3, 3, 1, 2, 1, 3, 2, 3, 3, 2, 3, 1, 
1, 2, 1, 2, 1, 1, 1, 2, 2, 2, 3, 1, 2, 1, 3, 3, 2, 2, 1, 2, 1, 
3, 3, 2, 2, 3, 2, 2, 2, 1, 3, 3, 3, 1, 1, 1, 1, 2, 1, 3, 1, 2, 
3, 2, 1, 1, 2, 1, 2, 2, 1, 1, 1, 2, 1, 3, 2, 2, 3, 3, 3, 1, 1, 
3, 3, 1, 3, 1, 2, 3, 2, 1, 1, 1, 1, 2, 3, 3, 3, 2, 1, 1, 2, 1, 
2, 1, 1, 3, 1, 2, 2, 2, 1, 1, 3, 1, 3, 2, 1, 1, 1, 1, 1, 1, 3, 
1, 2, 1, 1, 1, 3, 1, 1, 1, 1, 2, 1), RS.5_3 = c(1, 3, 3, 3, 1, 
1, 3, 2, 3, 2, 1, 3, 1, 3, 3, 3, 3, 1, 1, 1, 2, 1, 2, 1, 3, 1, 
2, 1, 3, 2, 1, 1, 3, 1, 2, 2, 1, 2, 3, 3, 1, 1, 2, 3, 3, 2, 3, 
3, 1, 2, 1, 2, 3, 1, 3, 1, 2, 3, 3, 2, 1, 3, 1, 2, 1, 2, 3, 2, 
2, 3, 2, 1, 1, 1, 3, 2, 1, 3, 3, 1, 3, 1, 2, 2, 3, 3, 2, 2, 3, 
2, 2, 2, 2, 1, 2, 3, 3, 2, 2, 1, 2, 3, 1, 1, 3, 1, 1, 1, 1, 3, 
2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 1, 1, 2, 1, 1, 2, 2, 2, 3, 1, 2, 
2, 2, 1, 3, 1, 2, 1, 2, 2, 1, 3, 3, 2, 3, 3, 3, 1, 1, 3, 3, 1, 
1, 2, 2, 3, 1, 1, 2, 1, 2, 3, 2, 2, 2, 2, 3, 2, 1, 2, 2, 2, 2, 
3, 1, 3, 3, 3, 3, 2, 1, 1, 2, 3, 1, 3, 3, 3, 2, 2, 2, 2, 3, 2, 
3, 1, 3, 2, 2, 3, 1, 2, 1, 1, 3, 1, 3, 1, 2, 2, 2, 1, 1, 1, 1, 
3, 3, 1, 1, 3, 2, 3, 2, 1, 3, 3, 3, 2, 1, 3, 3, 3, 3, 3, 3, 1, 
1, 1, 1, 3, 3, 3, 2, 2, 1, 3, 3, 3, 3, 2, 3, 3, 2, 3, 2, 2, 1, 
3, 3, 3, 3, 1, 1, 1, 3, 3, 1, 2, 1, 1, 3, 1, 3, 2, 1, 3, 2, 2, 
3, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 3, 2, 2, 2, 1, 1, 1, 3, 1, 3, 
1, 2, 2, 1, 3, 2, 1, 2, 1, 1, 2, 3, 3, 3, 2, 1, 2, 1, 3, 2, 3, 
1, 3, 3, 1, 3, 1, 1, 3, 3, 2, 2, 2, 1, 2, 1, 3, 2, 2, 1, 1, 3, 
2, 1, 1, 2, 3, 2, 2, 3, 1, 2, 3, 3, 1, 3, 2, 2, 1, 3, 3, 3, 3, 
1, 2, 2, 2, 3, 1, 3, 2, 3, 2, 2, 3, 1, 3, 2, 2, 3, 3, 1, 1, 1, 
1, 2, 1, 2, 1, 3, 1, 2, 1, 1, 1, 3, 2, 3, 3, 3, 1, 3, 3, 1, 1, 
1, 1, 2, 2, 1, 1, 1, 1, 1, 3, 3, 1, 1, 2, 1, 1, 3, 3, 3, 3, 3, 
3, 2, 3, 1, 2, 2, 1, 3, 1, 3, 2, 2, 3, 1, 3, 3, 3, 2, 1, 3, 1, 
3, 3, 3, 2, 2, 1, 3, 3, 3, 2, 2, 1, 3, 3, 3, 3, 1, 3, 1, 1, 3, 
1, 1, 1, 2, 1, 3, 2, 2, 3, 1, 1, 2, 3, 3, 3, 1, 2, 3, 1, 3, 2, 
3, 3, 3, 2, 3, 3, 2, 3, 2, 3, 2, 3, 1, 2, 3, 3, 3, 1, 2, 3, 2, 
1, 3, 2, 1, 1, 3, 1, 1, 1, 1, 3, 3, 1, 3, 3, 3, 2, 3, 1, 3, 3, 
3, 1, 3, 2, 3, 2, 1, 1, 2, 1, 3, 3, 3, 3, 3, 3, 3, 1, 2, 3, 1, 
1, 3, 1, 1, 3, 3, 1, 1, 1, 1, 3, 2, 1, 1, 1, 1, 2, 2, 1, 2, 2, 
1, 1, 3, 1, 1, 3, 3, 2, 1, 1)), .Names = c("lot", "RS.5_1", "RS.5_2", 
"RS.5_3"), row.names = c(NA, -582L), class = "data.frame") 
+0

благодарственного вы, @plannapus! – Iurie

ответ

2

Не знаю, сколько это добавляет, но вы спросили, как это реализовать в функции:

pw.wcx <- function(data,x,factor){ 
    result <- Reduce(function(x,y)merge(x,y,by="Var1"), 
        lapply(data[x],function(d){ 
        pw <- pairwise.wilcox.test(d,factor,p.adj="bonf")[[3]] 
        transform(melt(pw),Var1=paste(Var2,Var1,sep="-"))[-2]}), 
        accumulate=FALSE) 
    colnames(result) <- c("Compared Groups",names(data[x])) 
    result 
} 
result <- pw.wcx(tabel2,2:4,tabel2$lot) 
head(result) 
# Compared Groups RS.5_1 RS.5_2 RS.5_3 
# 1  1StL-3StL  1 1.0000000  1 
# 2   1StL-IP  1 0.1092484  1 
# 3  1StL-ISR  1 1.0000000  1 
# 4  1StL-ISU  1 1.0000000  1 
# 5  1StL-StM  1 1.0000000  1 
# 6  3StL-3StL  NA  NA  NA 

Таким образом, это создает список кадры данных с помощью:

lapply(data[x],function(d){ 
    pw <- pairwise.wilcox.test(d,factor,p.adj="bonf")[[3]] 
    transform(melt(pw),Var1=paste(Var2,Var1,sep="-"))[-2]}) 

затем объединяет их с помощью Reduce(...) как в флористику r ответ.

EDIT: Ответ на комментарии ОП.

pw.wcx <- function(data,x,factor){ 
    result <- Reduce(function(x,y)merge(x,y,by="Var1"), 
        lapply(x,function(i){ 
        pw <- pairwise.wilcox.test(data[,i],factor,p.adj="bonf")[[3]] 
        transform(melt(pw,value.name=names(data)[i]),Var1=paste(Var2,Var1,sep="-"))[-2]}), 
        accumulate=FALSE) 
    colnames(result)[1] <- "Compared Groups" 
    result 
} 

Эта версия позволит избежать предупреждений, но я не рекомендую. Это в основном использует lapply(...) как прославленная для петли, которые не воспользоваться очень эффективной обработкой списка АиРа (например, кадр данных subsetted один раза в итерацию с использованием data[,i], а не только один раз в начале, используя data[x].

+0

Работал как шарм! Большое спасибо! PS В 'result <- pw.wcx (tabel2,2: 4, test2 $ lot)' change 'test2' в' tabel2'. – Iurie

+0

Ваша функция работает (она производит то, что ожидается), но там 50+ предупреждений: '1: В файле merge.data.frame (x, y, by =" Var1 "): имена столбцов value.x ',' value.y 'дублируются в re sult'. Почему это происходит? – Iurie

+0

Это связано с тем, что каждый кадр данных в списке имеет столбец p-value с именем 'value' (из-за использования' melt (...) '), поэтому он пытается создать несколько столбцов в результате слияния с этим именем , Но я переименовываю столбцы перед тем, как функция выйдет, поэтому вы не видите этого в конечном результате. – jlhoward

1

Ваша структура утверждение не работает для меня ... Я думаю, что это суть вашего вопроса?

df1 <- data.frame(group=c('A', 'B', 'C'), result1=c(1, 2, 3)) 
df2 <- data.frame(group=c('A', 'B', 'C'), result2=c(4, 5, 6)) 
df3 <- data.frame(group=c('A', 'B', 'C'), result3=c(7, 8, 9)) 

result.temp <- merge(df1, df2) 
result  <- merge(result.temp, df3) 

result 
# group result1 result2 result3 
# 1  A  1  4  7 
# 2  B  2  5  8 
# 3  C  3  6  9 

В противном случае, если они всегда такой же длины, почему бы не просто cbind?

Per @ совет Роланда в комментарии:

df.list <- list(df1, df2, df3) 
Reduce(function(x, y) merge(x, y, all=T, by=c("group")), df.list, accumulate=F) 
+0

Спасибо, я обновил свои данные, вы можете попробовать еще раз. – Iurie

+0

Если это то, что ему нужно, он будет использовать 'Reduce' с' merge' и указать столбцы для объединения. – Roland

Смежные вопросы