I have a large data table with over 300 columns. I would like to get by each letter column
-- summary of (each observation in column * weight of observation).
-- summary of weight if obs. in a letter column is more than 0.
Here I provided a example for a column.
 id <- c("0001", "0002", "0003", "0004")
 a <- c(0, 9, 8, 5)
 b <- c(0,5,5,0)
 c <- c(1.5, 0.55, 0, 0.06)
 weight <- c(102.354, 34.998, 84.664, .657)
 data <- data.frame(id, a, b, c, weight)
 data
   id a b    c  weight
 1 0001 0 0 1.50 102.354
 2 0002 9 5 0.55  34.998
 3 0003 8 5 0.00  84.664
 4 0004 5 0 0.06   0.657
 sum(data$a * data$weight)
[1] 995.579
 sum(data$weight[data$a >0])
[1] 120.319
Any idea?
                        
The following code should solve your question:
or directly to
data.frame: