[R] to create a new variable based on values in other variables
Thierry Onkelinx
th|erry@onke||nx @end|ng |rom |nbo@be
Tue Apr 7 20:48:12 CEST 2020
Dear Ding,
It seems that you are looking for the ifelse() function. Clear use of
pmax() and pmin() reduces the number of if statements.
m1 <- c(12, 23, 22, 23)
m2 <- c(23, 23, 3, 5)
Ravg <- ifelse(
pmax(m1, m2) == 23,
pmin(m1, m2),
(m1 + m2) / 2
)
Best regards,
ir. Thierry Onkelinx
Statisticus / Statistician
Vlaamse Overheid / Government of Flanders
INSTITUUT VOOR NATUUR- EN BOSONDERZOEK / RESEARCH INSTITUTE FOR NATURE AND
FOREST
Team Biometrie & Kwaliteitszorg / Team Biometrics & Quality Assurance
thierry.onkelinx using inbo.be
Havenlaan 88 bus 73, 1000 Brussel
www.inbo.be
///////////////////////////////////////////////////////////////////////////////////////////
To call in the statistician after the experiment is done may be no more
than asking him to perform a post-mortem examination: he may be able to say
what the experiment died of. ~ Sir Ronald Aylmer Fisher
The plural of anecdote is not data. ~ Roger Brinner
The combination of some data and an aching desire for an answer does not
ensure that a reasonable answer can be extracted from a given body of data.
~ John Tukey
///////////////////////////////////////////////////////////////////////////////////////////
<https://www.inbo.be>
Op di 7 apr. 2020 om 20:35 schreef Yuan Chun Ding <ycding using coh.org>:
> Hi R users,
>
>
> I want to create a new variable, Ravg, in data frame tem2 based on values
> of two other variables m1 and m2.
>
> the condition:
>
> if m1 = 23 and m2 =23 then Ravg =23;
> else if m1 != 23 and m2=23 then Ravg =m1;
> else if m1 =23 and m2 !=23 then Ravg=m2;
> else Ravg=average of m1 and m2;
>
> the Ravg variable should be same as m3 variable in the following small
> example.
>
> my R code did not generate errors but not generate a new variable.
>
> Ravg <- "rare_allele"
> tem2 <-data.frame(m1=c(12, 23, 22, 23), m2=c(23, 23, 3, 5), m3 =c(12,
> 23, 12.5, 5))
> for (r in 1:nrow(tem2)) {
> if (tem2$m1[r] ==23 & tem2$m2[r] ==23) {
> tem2[[Ravg]][r] ==23} else if(tem2$m1[r] ==23 & tem2$m2[r] !=23){
> tem2[[Ravg]][r] ==tem2$m2[r]} else if (tem2$m1[r] !=23 & tem2$m2[r]
> ==23) {
> tem2[[Ravg]][r] ==tem2$m1[r]} else {
> tem2[[Ravg]][r] == mean(tem2$m1[r] + tem2$m2[r])}
> }
>
> Thank you,
>
> Ding
>
> ----------------------------------------------------------------------
> ------------------------------------------------------------
> -SECURITY/CONFIDENTIALITY WARNING-
>
> This message and any attachments are intended solely for the individual or
> entity to which they are addressed. This communication may contain
> information that is privileged, confidential, or exempt from disclosure
> under applicable law (e.g., personal health information, research data,
> financial information). Because this e-mail has been sent without
> encryption, individuals other than the intended recipient may be able to
> view the information, forward it to others or tamper with the information
> without the knowledge or consent of the sender. If you are not the intended
> recipient, or the employee or person responsible for delivering the message
> to the intended recipient, any dissemination, distribution or copying of
> the communication is strictly prohibited. If you received the communication
> in error, please notify the sender immediately by replying to this message
> and deleting the message and any accompanying files from your system. If,
> due to the security risks, you do not wish to receive further
> communications via e-mail, please reply to this message and inform the
> sender that you do not wish to receive further e-mail from the sender.
> (LCP301)
>
> ______________________________________________
> R-help using 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]]
More information about the R-help
mailing list