Work's for me: sapply(unique(union(names(data1), names(data2))), function(n)Reduce('+', m[grep(n, names(m))])) 1 2 3 4 5 6 [1,] 0.2481509 0.2481509 1.240754 0.7444526 0.000000 0.9926034 [2,] 2.5269063 1.2634532 1.263453 2.5269063 1.263453 3.1118565 [3,] 0.0000000 6.6856351 3.342818 1.6714088 0.000000 1.6714088 [4,] 3.3955301 6.7910603 0.000000 0.0000000 3.395530 3.3955301 [5,] 17.6053685 17.6053685 0.000000 10.4981500 0.000000 5.8684562 [6,] 0.0000000 0.0000000 9.145319 0.0000000 0.000000 9.1453187 [7,] 24.9346349 0.0000000 26.548650 24.9346349 46.641240 0.0000000 [8,] 16.0344100 0.0000000 73.195722 0.0000000 48.103220 16.0344054 [9,] 21.2623400 24.2592465 0.000000 45.5215865 63.787020 63.7870201 [10,] 54.7977900 62.3859139 155.964785 117.1837039 27.398900 58.5918536 [11,] 142.6301076 117.4078128 39.135938 0.0000000 0.000000 34.4980557 [12,] 0.0000000 96.2453820 0.000000 48.1226910 133.348991 42.6131524 [13,] 0.0000000 58.1866603 0.000000 109.9836503 0.000000 51.7969933 [14,] 62.1019500 0.0000000 0.000000 0.0000000 62.101950 0.0000000 [15,] 163.3521313 0.0000000 81.676066 0.0000000 0.000000 0.0000000 [16,] 0.0000000 0.0000000 0.000000 0.0000000 0.000000 0.0000000 [17,] 0.0000000 0.0000000 109.858092 0.0000000 0.000000 0.0000000 [18,] 0.0000000 0.0000000 0.000000 0.0000000 0.000000 0.0000000 [19,] 0.0000000 0.0000000 0.000000 142.9800268 0.000000 142.9800268 [20,] NA 0.0000000 0.000000 NA NA NA [21,] NA 202.4565276 0.000000 NA NA NA [22,] NA 0.0000000 0.000000 NA NA NA
On Thu, Jan 21, 2010 at 9:02 AM, Alfredo Alessandrini <alfreal...@gmail.com> wrote: > I've try it... > > But don't work. > >> data1 > 1 2 3 4 5 6 > 5 0.2481509 0.2481509 1.240754 0.7444526 0.000000 0.9926034 > 10 2.5269063 1.2634532 1.263453 2.5269063 1.263453 2.5269063 > 15 0.0000000 6.6856351 3.342818 1.6714088 0.000000 1.6714088 > 20 3.3955301 6.7910603 0.000000 0.0000000 3.395530 3.3955301 > 25 17.6053685 17.6053685 0.000000 0.0000000 0.000000 5.8684562 > 30 0.0000000 0.0000000 9.145319 0.0000000 0.000000 9.1453187 > 35 13.2743249 0.0000000 26.548650 13.2743249 0.000000 0.0000000 > 40 0.0000000 0.0000000 73.195722 0.0000000 0.000000 0.0000000 > 45 0.0000000 24.2592465 0.000000 24.2592465 0.000000 0.0000000 > 50 0.0000000 62.3859139 155.964785 62.3859139 0.000000 31.1929569 > 55 39.1359376 117.4078128 39.135938 0.0000000 0.000000 0.0000000 > 60 0.0000000 96.2453820 0.000000 48.1226910 48.122691 0.0000000 > 65 0.0000000 58.1866603 0.000000 58.1866603 0.000000 0.0000000 > 70 0.0000000 0.0000000 0.000000 0.0000000 0.000000 0.0000000 > 75 163.3521313 0.0000000 81.676066 0.0000000 0.000000 0.0000000 > 80 0.0000000 0.0000000 0.000000 0.0000000 0.000000 0.0000000 > 85 0.0000000 0.0000000 109.858092 0.0000000 0.000000 0.0000000 > 90 0.0000000 0.0000000 0.000000 0.0000000 0.000000 0.0000000 > 95 0.0000000 0.0000000 0.000000 142.9800268 0.000000 142.9800268 > 100 161.4695650 0.0000000 0.000000 0.0000000 0.000000 0.0000000 > 105 0.0000000 0.0000000 0.000000 0.0000000 0.000000 0.0000000 > 110 0.0000000 202.4565276 0.000000 0.0000000 0.000000 0.0000000 >> data2 > 1 4 5 6 > 5 0.00000 0.00000 0.00000 0.0000000 > 10 0.00000 0.00000 0.00000 0.5849502 > 15 0.00000 0.00000 0.00000 0.0000000 > 20 0.00000 0.00000 0.00000 0.0000000 > 25 0.00000 10.49815 0.00000 0.0000000 > 30 0.00000 0.00000 0.00000 0.0000000 > 35 11.66031 11.66031 46.64124 0.0000000 > 40 16.03441 0.00000 48.10322 16.0344054 > 45 21.26234 21.26234 63.78702 63.7870201 > 50 54.79779 54.79779 27.39890 27.3988967 > 55 103.49417 0.00000 0.00000 34.4980557 > 60 0.00000 0.00000 85.22630 42.6131524 > 65 0.00000 51.79699 0.00000 51.7969933 > 70 62.10195 0.00000 62.10195 0.0000000 > 75 0.00000 0.00000 0.00000 0.0000000 > 80 0.00000 0.00000 0.00000 0.0000000 > 85 0.00000 0.00000 0.00000 0.0000000 > 90 0.00000 0.00000 0.00000 0.0000000 > 95 0.00000 0.00000 0.00000 0.0000000 >> m <- merge(data1, data2, by = 0, all = TRUE, sort = FALSE) >> m > Row.names 1.x 2 3 4.x 5.x > 1 5 0.2481509 0.2481509 1.240754 0.7444526 0.000000 > 2 10 2.5269063 1.2634532 1.263453 2.5269063 1.263453 > 3 15 0.0000000 6.6856351 3.342818 1.6714088 0.000000 > 4 20 3.3955301 6.7910603 0.000000 0.0000000 3.395530 > 5 25 17.6053685 17.6053685 0.000000 0.0000000 0.000000 > 6 30 0.0000000 0.0000000 9.145319 0.0000000 0.000000 > 7 35 13.2743249 0.0000000 26.548650 13.2743249 0.000000 > 8 40 0.0000000 0.0000000 73.195722 0.0000000 0.000000 > 9 45 0.0000000 24.2592465 0.000000 24.2592465 0.000000 > 10 50 0.0000000 62.3859139 155.964785 62.3859139 0.000000 > 11 55 39.1359376 117.4078128 39.135938 0.0000000 0.000000 > 12 60 0.0000000 96.2453820 0.000000 48.1226910 48.122691 > 13 65 0.0000000 58.1866603 0.000000 58.1866603 0.000000 > 14 70 0.0000000 0.0000000 0.000000 0.0000000 0.000000 > 15 75 163.3521313 0.0000000 81.676066 0.0000000 0.000000 > 16 80 0.0000000 0.0000000 0.000000 0.0000000 0.000000 > 17 85 0.0000000 0.0000000 109.858092 0.0000000 0.000000 > 18 90 0.0000000 0.0000000 0.000000 0.0000000 0.000000 > 19 95 0.0000000 0.0000000 0.000000 142.9800268 0.000000 > 20 105 0.0000000 0.0000000 0.000000 0.0000000 0.000000 > 21 110 0.0000000 202.4565276 0.000000 0.0000000 0.000000 > 22 100 161.4695650 0.0000000 0.000000 0.0000000 0.000000 > 6.x 1.y 4.y 5.y 6.y > 1 0.9926034 0.00000 0.00000 0.00000 0.0000000 > 2 2.5269063 0.00000 0.00000 0.00000 0.5849502 > 3 1.6714088 0.00000 0.00000 0.00000 0.0000000 > 4 3.3955301 0.00000 0.00000 0.00000 0.0000000 > 5 5.8684562 0.00000 10.49815 0.00000 0.0000000 > 6 9.1453187 0.00000 0.00000 0.00000 0.0000000 > 7 0.0000000 11.66031 11.66031 46.64124 0.0000000 > 8 0.0000000 16.03441 0.00000 48.10322 16.0344054 > 9 0.0000000 21.26234 21.26234 63.78702 63.7870201 > 10 31.1929569 54.79779 54.79779 27.39890 27.3988967 > 11 0.0000000 103.49417 0.00000 0.00000 34.4980557 > 12 0.0000000 0.00000 0.00000 85.22630 42.6131524 > 13 0.0000000 0.00000 51.79699 0.00000 51.7969933 > 14 0.0000000 62.10195 0.00000 62.10195 0.0000000 > 15 0.0000000 0.00000 0.00000 0.00000 0.0000000 > 16 0.0000000 0.00000 0.00000 0.00000 0.0000000 > 17 0.0000000 0.00000 0.00000 0.00000 0.0000000 > 18 0.0000000 0.00000 0.00000 0.00000 0.0000000 > 19 142.9800268 0.00000 0.00000 0.00000 0.0000000 > 20 0.0000000 NA NA NA NA > 21 0.0000000 NA NA NA NA > 22 0.0000000 NA NA NA NA >> sapply(unique(union(names(data1), names(data2))), function(n)Reduce('+', >> m[grep(n, names(m))])) > list() >> > > > 2010/1/20 Henrique Dallazuanna <www...@gmail.com>: >> Try this: >> >>> m <- merge(data1, data2, by = 0, all = TRUE, sort = FALSE) >>> sapply(unique(union(names(data1), names(data2))), function(n)Reduce('+', >>> m[grep(n, names(m))])) >> >> On Wed, Jan 20, 2010 at 10:59 AM, Alfredo Alessandrini >> <alfreal...@gmail.com> wrote: >>> Hi, >>> >>> I've this dataframes: >>> >>>> data1 >>> 1 2 3 4 5 6 >>> 5 0.4963017 0 0 0.2481509 1.9852069 0.4963017 >>> 10 0.0000000 0 0 0.0000000 0.6317266 0.0000000 >>> 15 0.0000000 0 0 0.0000000 0.0000000 0.0000000 >>> 20 0.0000000 0 0 3.3955301 0.0000000 0.0000000 >>> 25 0.0000000 0 0 0.0000000 0.0000000 0.0000000 >>> 30 0.0000000 0 0 0.0000000 0.0000000 0.0000000 >>> 35 0.0000000 0 0 0.0000000 0.0000000 0.0000000 >>> >>>> data2 >>> 1 4 5 6 >>> 5 0.00000 0.00000 0.00000 0.0000000 >>> 10 0.00000 0.00000 0.00000 0.5849502 >>> 15 0.00000 0.00000 0.00000 0.0000000 >>> 20 0.00000 0.00000 0.00000 0.0000000 >>> 25 0.00000 10.49815 0.00000 0.0000000 >>> >>> Can I sum the dataframe, by colnames? >>> >>> The sum is: >>> >>> 1 2 3 4 5 6 >>> 5 0.4963017 0 0 0.2481509 1.9852069 0.4963017 >>> 10 0.0000000 0 0 0.0000000 0.6317266 0.5849502 >>> 15 0.0000000 0 0 0.0000000 0.0000000 0.0000000 >>> 20 0.0000000 0 0 3.3955301 0.0000000 0.0000000 >>> 25 0.0000000 0 0 10.498150 0.0000000 0.0000000 >>> 30 0.0000000 0 0 0.0000000 0.0000000 0.0000000 >>> 35 0.0000000 0 0 0.0000000 0.0000000 0.0000000 >>> >>> >>> Thanks, >>> >>> Alfredo >>> >>> ______________________________________________ >>> R-help@r-project.org mailing list >>> 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. >>> >> >> >> >> -- >> Henrique Dallazuanna >> Curitiba-Paraná-Brasil >> 25° 25' 40" S 49° 16' 22" O >> > -- Henrique Dallazuanna Curitiba-Paraná-Brasil 25° 25' 40" S 49° 16' 22" O ______________________________________________ R-help@r-project.org mailing list 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.