sum column by colnames
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
<alfreale74 at 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 <wwwhsd at 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 <alfreale74 at 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 at 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