[R] About calculating average values from several matrices

Charles Determan cdetermanjr at gmail.com
Tue May 9 17:11:17 CEST 2017


Just call 'round' on your results then at your desired number of digits.

On Tue, May 9, 2017 at 10:09 AM, lily li <chocold12 at gmail.com> wrote:

> 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]]



More information about the R-help mailing list