Advertisement
Edster

Multiple Merge data.frame and Calculate the columns

Oct 13th, 2015
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
R 0.71 KB | None | 0 0
  1. a=cbind("A"=sample(1:100,5), "B"=sample(1:50,5), "a"=rnorm(5), "e"=rnorm(5))
  2. b=cbind("A"=sample(1:100,10),"B"=sample(1:50,10),"b"=rnorm(10),"e"=rnorm(10))
  3. c=cbind("A"=sample(1:100,15),"B"=sample(1:50,15),"c"=rnorm(15),"e"=rnorm(15))
  4. d=cbind("A"=sample(1:100,20),"B"=sample(1:50,20),"d"=rnorm(20),"e"=rnorm(20))
  5.  
  6. L = list(a,b,c,d)
  7. merge(L[[1]],L[[2]],by=c("A"))
  8. merge(L[[1]],L[[2]],by=c("A","B"))
  9. merge(L[[1]],L[[2]],by=c("A","B"),all=T)
  10.  
  11. MultiMerge = function(L, by){
  12.   M=L[[1]]
  13.   for(i in 2:length(L))
  14.     M = merge(M,L[[i]],by=by,all=T)
  15.   return(M)
  16. }
  17. M=MultiMerge(L,by=c("A","B"))
  18.  
  19. dataCol = c("e.")
  20. M = data.frame(M[,-grep(dataCol, colnames(M))], "e" = rowSums(M[,grep(dataCol, colnames(M))], na.rm=T))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement