I meant for each cell, it takes the average from other dataframes at the same cell. I don't know how to deal with row names and col names though, so it has the error message. On Tue, May 9, 2017 at 8:50 AM, Doran, Harold <HDoran at air.org> wrote:> It?s not clear to me what your actual structure is. Can you provide > str(object)? Assuming it is a list, and you want the mean over all cells or > columns, you might want like this: > > > > myData <- vector("list", 3) > > > > for(i in 1:3){ > > myData[[i]] <- matrix(rnorm(100), 10, 10) > > } > > > > ### mean over all cells > > sapply(myData, function(x) mean(x)) > > > > ### mean over all columns > > sapply(myData, function(x) colMeans(x)) > > > > > > > > > > > > *From:* lily li [mailto:chocold12 at gmail.com] > *Sent:* Tuesday, May 09, 2017 10:44 AM > *To:* Doran, Harold <HDoran at air.org> > *Cc:* R mailing list <r-help at r-project.org> > *Subject:* Re: [R] About calculating average values from several matrices > > > > I'm trying to get a new dataframe or whatever to call, which has the same > structure with each file as listed above. For each cell in the new > dataframe or the new file, it is the average value from former dataframes > at the same location. Thanks. > > > > On Tue, May 9, 2017 at 8:41 AM, Doran, Harold <HDoran at air.org> wrote: > > Are you trying to take the mean over all cells, or over rows/columns > within each dataframe. Also, are these different dataframes stored within a > list or are they standalone? > > > > > -----Original Message----- > From: R-help [mailto:r-help-bounces at r-project.org] On Behalf Of lily li > Sent: Tuesday, May 09, 2017 10:39 AM > To: R mailing list <r-help at r-project.org> > Subject: [R] About calculating average values from several matrices > > Hi R users, > > I have a question about manipulating the data. > For example, there are several such data frames or matrices, and I want to > calculate the average value from all the data frames or matrices. How to do > it? Also, should I convert them to data frame or matrix first? Right now, > when I use typeof() function, each one is a list. > > file1 > jan feb mar apr may jun jul aug sep oct nov > > app1 1.1 1.2 0.8 0.9 1.3 1.5 2.2 3.2 3.0 1.2 1.1 > app2 3.1 3.2 2.8 2.5 2.3 2.5 3.2 3.0 2.9 1.8 1.8 > app3 5.1 5.2 3.8 4.9 5.3 5.5 5.2 4.2 5.0 4.2 4.1 > > file2 > jan feb mar apr may jun jul aug sep oct nov > > app1 1.9 1.5 0.5 0.9 1.2 1.8 2.5 3.7 3.2 1.5 1.6 > app2 3.5 3.7 2.3 2.2 2.5 2.0 3.6 3.2 2.8 1.2 1.4 > app3 5.5 5.0 3.5 4.4 5.4 5.6 5.3 4.4 5.2 4.3 4.2 > > file3 has the similar structure and values... > > There are eight such files, and when I use the function mean(file1, file2, > file3, ..., file8), it returns the error below. Thanks for your help. > > Warning message: > In mean.default(file1, file2, file3, file4, file5, file6, file7, : > argument is not numeric or logical: returning NA > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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. > > >[[alternative HTML version deleted]]
Charles Determan
2017-May-09 15:04 UTC
[R] About calculating average values from several matrices
If you want the mean of each element across you list of matrices the following should provide what you are looking for where Reduce sums all your matrix elements across matrices and the simply divided my the number of matrices for the element-wise mean. Reduce(`+`, mylist)/length(mylist) Regards, Charles On Tue, May 9, 2017 at 9:52 AM, lily li <chocold12 at gmail.com> wrote:> I meant for each cell, it takes the average from other dataframes at the > same cell. I don't know how to deal with row names and col names though, so > it has the error message. > > On Tue, May 9, 2017 at 8:50 AM, Doran, Harold <HDoran at air.org> wrote: > > > It?s not clear to me what your actual structure is. Can you provide > > str(object)? Assuming it is a list, and you want the mean over all cells > or > > columns, you might want like this: > > > > > > > > myData <- vector("list", 3) > > > > > > > > for(i in 1:3){ > > > > myData[[i]] <- matrix(rnorm(100), 10, 10) > > > > } > > > > > > > > ### mean over all cells > > > > sapply(myData, function(x) mean(x)) > > > > > > > > ### mean over all columns > > > > sapply(myData, function(x) colMeans(x)) > > > > > > > > > > > > > > > > > > > > > > > > *From:* lily li [mailto:chocold12 at gmail.com] > > *Sent:* Tuesday, May 09, 2017 10:44 AM > > *To:* Doran, Harold <HDoran at air.org> > > *Cc:* R mailing list <r-help at r-project.org> > > *Subject:* Re: [R] About calculating average values from several matrices > > > > > > > > I'm trying to get a new dataframe or whatever to call, which has the same > > structure with each file as listed above. For each cell in the new > > dataframe or the new file, it is the average value from former dataframes > > at the same location. Thanks. > > > > > > > > On Tue, May 9, 2017 at 8:41 AM, Doran, Harold <HDoran at air.org> wrote: > > > > Are you trying to take the mean over all cells, or over rows/columns > > within each dataframe. Also, are these different dataframes stored > within a > > list or are they standalone? > > > > > > > > > > -----Original Message----- > > From: R-help [mailto:r-help-bounces at r-project.org] On Behalf Of lily li > > Sent: Tuesday, May 09, 2017 10:39 AM > > To: R mailing list <r-help at r-project.org> > > Subject: [R] About calculating average values from several matrices > > > > Hi R users, > > > > I have a question about manipulating the data. > > For example, there are several such data frames or matrices, and I want > to > > calculate the average value from all the data frames or matrices. How to > do > > it? Also, should I convert them to data frame or matrix first? Right now, > > when I use typeof() function, each one is a list. > > > > file1 > > jan feb mar apr may jun jul aug sep oct > nov > > > > app1 1.1 1.2 0.8 0.9 1.3 1.5 2.2 3.2 3.0 1.2 > 1.1 > > app2 3.1 3.2 2.8 2.5 2.3 2.5 3.2 3.0 2.9 1.8 > 1.8 > > app3 5.1 5.2 3.8 4.9 5.3 5.5 5.2 4.2 5.0 4.2 > 4.1 > > > > file2 > > jan feb mar apr may jun jul aug sep oct > nov > > > > app1 1.9 1.5 0.5 0.9 1.2 1.8 2.5 3.7 3.2 1.5 > 1.6 > > app2 3.5 3.7 2.3 2.2 2.5 2.0 3.6 3.2 2.8 1.2 > 1.4 > > app3 5.5 5.0 3.5 4.4 5.4 5.6 5.3 4.4 5.2 4.3 > 4.2 > > > > file3 has the similar structure and values... > > > > There are eight such files, and when I use the function mean(file1, > file2, > > file3, ..., file8), it returns the error below. Thanks for your help. > > > > Warning message: > > In mean.default(file1, file2, file3, file4, file5, file6, file7, : > > argument is not numeric or logical: returning NA > > > > [[alternative HTML version deleted]] > > > > ______________________________________________ > > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > > 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. > > > > > > > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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. >[[alternative HTML version deleted]]
Thanks very much, it works. But how to round the values to have only 1 decimal digit or 2 decimal digits? I think by dividing, the values are double type now. Thanks again. On Tue, May 9, 2017 at 9:04 AM, Charles Determan <cdetermanjr at gmail.com> wrote:> If you want the mean of each element across you list of matrices the > following should provide what you are looking for where Reduce sums all > your matrix elements across matrices and the simply divided my the number > of matrices for the element-wise mean. > > Reduce(`+`, mylist)/length(mylist) > > Regards, > Charles > > On Tue, May 9, 2017 at 9:52 AM, lily li <chocold12 at gmail.com> wrote: > >> I meant for each cell, it takes the average from other dataframes at the >> same cell. I don't know how to deal with row names and col names though, >> so >> it has the error message. >> >> On Tue, May 9, 2017 at 8:50 AM, Doran, Harold <HDoran at air.org> wrote: >> >> > It?s not clear to me what your actual structure is. Can you provide >> > str(object)? Assuming it is a list, and you want the mean over all >> cells or >> > columns, you might want like this: >> > >> > >> > >> > myData <- vector("list", 3) >> > >> > >> > >> > for(i in 1:3){ >> > >> > myData[[i]] <- matrix(rnorm(100), 10, 10) >> > >> > } >> > >> > >> > >> > ### mean over all cells >> > >> > sapply(myData, function(x) mean(x)) >> > >> > >> > >> > ### mean over all columns >> > >> > sapply(myData, function(x) colMeans(x)) >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > *From:* lily li [mailto:chocold12 at gmail.com] >> > *Sent:* Tuesday, May 09, 2017 10:44 AM >> > *To:* Doran, Harold <HDoran at air.org> >> > *Cc:* R mailing list <r-help at r-project.org> >> > *Subject:* Re: [R] About calculating average values from several >> matrices >> >> > >> > >> > >> > I'm trying to get a new dataframe or whatever to call, which has the >> same >> > structure with each file as listed above. For each cell in the new >> > dataframe or the new file, it is the average value from former >> dataframes >> > at the same location. Thanks. >> > >> > >> > >> > On Tue, May 9, 2017 at 8:41 AM, Doran, Harold <HDoran at air.org> wrote: >> > >> > Are you trying to take the mean over all cells, or over rows/columns >> > within each dataframe. Also, are these different dataframes stored >> within a >> > list or are they standalone? >> > >> > >> > >> > >> > -----Original Message----- >> > From: R-help [mailto:r-help-bounces at r-project.org] On Behalf Of lily li >> > Sent: Tuesday, May 09, 2017 10:39 AM >> > To: R mailing list <r-help at r-project.org> >> > Subject: [R] About calculating average values from several matrices >> > >> > Hi R users, >> > >> > I have a question about manipulating the data. >> > For example, there are several such data frames or matrices, and I want >> to >> > calculate the average value from all the data frames or matrices. How >> to do >> > it? Also, should I convert them to data frame or matrix first? Right >> now, >> > when I use typeof() function, each one is a list. >> > >> > file1 >> > jan feb mar apr may jun jul aug sep oct >> nov >> > >> > app1 1.1 1.2 0.8 0.9 1.3 1.5 2.2 3.2 3.0 1.2 >> 1.1 >> > app2 3.1 3.2 2.8 2.5 2.3 2.5 3.2 3.0 2.9 1.8 >> 1.8 >> > app3 5.1 5.2 3.8 4.9 5.3 5.5 5.2 4.2 5.0 4.2 >> 4.1 >> > >> > file2 >> > jan feb mar apr may jun jul aug sep oct >> nov >> > >> > app1 1.9 1.5 0.5 0.9 1.2 1.8 2.5 3.7 3.2 1.5 >> 1.6 >> > app2 3.5 3.7 2.3 2.2 2.5 2.0 3.6 3.2 2.8 1.2 >> 1.4 >> > app3 5.5 5.0 3.5 4.4 5.4 5.6 5.3 4.4 5.2 4.3 >> 4.2 >> > >> > file3 has the similar structure and values... >> > >> > There are eight such files, and when I use the function mean(file1, >> file2, >> > file3, ..., file8), it returns the error below. Thanks for your help. >> > >> > Warning message: >> > In mean.default(file1, file2, file3, file4, file5, file6, file7, : >> > argument is not numeric or logical: returning NA >> > >> > [[alternative HTML version deleted]] >> > >> > ______________________________________________ >> > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see >> > 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. >> > >> > >> > >> >> [[alternative HTML version deleted]] >> >> ______________________________________________ >> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see >> https://stat.ethz.ch/mailman/listinfo/r-help >> PLEASE do read the posting guide http://www.R-project.org/posti >> ng-guide.html >> and provide commented, minimal, self-contained, reproducible code. >> > >[[alternative HTML version deleted]]