An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20120514/30b87013/attachment.pl>
select data
6 messages · R. Michael Weylandt, David L Carlson, David Winsemius +2 more
This was actually discussed about a week and a half ago with many good solutions offered, but I think the most idiomatic would be something like this: apply(dataset, 1, function(x) mean(x[x>0])) The reasons I like it: i) It uses the apply function to do the same operation row-wise (that's what the "1" does) to all elements of your data set -- since this is side-effect free (as a good functional language should be) it makes for easy parallelization if you move to "big data" ii) It uses an anonymous function (the "function ... " bit) which are first class objects in R and can be passed as arguments to other functions (here apply()) iii) It uses logical subscripting to pick out the values greater than zero -- I think the subscripting behavior is the very best bit of R Best, Michael
On Mon, May 14, 2012 at 12:32 PM, Andrea Sica <aerdna.sica at gmail.com> wrote:
Dear all, I am sure it won't be difficult for you!! I need to calculate the average among variables for the single units of my dataset. But, while doing it, I need to do not consider some values. To better explain, think like there are two units and three variables: ? ? ?V1 ? ?V2 ? ? V3 [1] ? 3 ? ? -2 ? ? ?4 [2] ?-1 ? ? ?4 ? ? ?1 and you want to calculate the average by row, without considering those negative values: => mean(1row) = (3+4)/2 => mean(2row) = (4+1)/2 Could anyone please give me the commands to do that in R? Thank you so much ? ? ? ?[[alternative HTML version deleted]]
______________________________________________ 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.
This overwrites the data so you might want to create a copy first. example <- data.frame(V1=c(3, -1), V2=c(-2, 4), V3=c(4, 1)) tf <- ifelse(example<0, TRUE, FALSE) example[tf] <- NA apply(example, 1, mean, na.rm=TRUE) ---------------------------------------------- David L Carlson Associate Professor of Anthropology Texas A&M University College Station, TX 77843-4352
-----Original Message-----
From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
project.org] On Behalf Of Andrea Sica
Sent: Monday, May 14, 2012 11:32 AM
To: r-help at r-project.org
Subject: [R] select data
Dear all,
I am sure it won't be difficult for you!!
I need to calculate the average among variables for the single units of
my
dataset.
But, while doing it, I need to do not consider some values.
To better explain, think like there are two units and three variables:
V1 V2 V3
[1] 3 -2 4
[2] -1 4 1
and you want to calculate the average by row, without considering those
negative values:
=> mean(1row) = (3+4)/2
=> mean(2row) = (4+1)/2
Could anyone please give me the commands to do that in R?
Thank you so much
[[alternative HTML version deleted]]
______________________________________________ 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.
On May 14, 2012, at 12:32 PM, Andrea Sica wrote:
Dear all,
I am sure it won't be difficult for you!!
I need to calculate the average among variables for the single units
of my
dataset.
But, while doing it, I need to do not consider some values.
To better explain, think like there are two units and three variables:
V1 V2 V3
[1] 3 -2 4
[2] -1 4 1
and you want to calculate the average by row, without considering
those
negative values:
=> mean(1row) = (3+4)/2
=> mean(2row) = (4+1)/2
perhaps (untested in absence of reproducble example): apply(dfrm, 1, function(x) mean(x[x>=0]) ) # would also work for a matrix object.
Could anyone please give me the commands to do that in R? Thank you so much [[alternative HTML version deleted]]
______________________________________________ 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.
David Winsemius, MD West Hartford, CT
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20120514/60b6ffc6/attachment.pl>
________________________________________
From: David L Carlson [dcarlson at tamu.edu] This overwrites the data so you might want to create a copy first. example <- data.frame(V1=c(3, -1), V2=c(-2, 4), V3=c(4, 1)) tf <- ifelse(example<0, TRUE, FALSE) example[tf] <- NA apply(example, 1, mean, na.rm=TRUE)
'simpler' to do something like
apply(example, 1, function(x) mean(x[x>=0]))
Also note that this is averaging _rows_; if you want the column (variable) means, which would be much more usual in a data frame, use apply(example, 2, function(x) mean(x[x>=0]))
S Ellisn*******************************************************************
This email and any attachments are confidential. Any use...{{dropped:8}}