Hi all, I have several variables in a group and one group contains three variables. Sample of data ( Year, x1, x3 and x2) mydat <- read.table(header=TRUE, text=' Year x1 x3 x2 Year1 10 12 0 Year2 0 15 0 Year3 0 0 20 Year4 25 0 12 Year5 15 25 12 Year6 0 16 14 Year7 0 10 0') I want create another variable( x4) based on the following condition. if x1 > 0 then x4 = x1; regardless of x2 and x3 values. if x1 = 0 and x2 > 0 then x4 = x2; if x1 = 0 and x2 = 0 then x4 = x3 The desired output looks like as follows Year x1 x3 x2 x4 Year1 10 12 0 10 Year2 0 15 0 15 Year3 0 0 20 20 Year4 25 0 12 25 Year5 15 25 12 15 Year6 0 16 14 14 Year7 0 10 0 10 Thank you in advance
?ifelse Cheers, Bert Bert Gunter "The trouble with having an open mind is that people keep coming along and sticking things into it." -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip ) On Fri, Mar 24, 2017 at 8:56 PM, Val <valkremk at gmail.com> wrote:> Hi all, > > > I have several variables in a group and one group contains three > variables. Sample of data ( Year, x1, x3 and x2) > > mydat <- read.table(header=TRUE, text=' Year x1 x3 x2 > Year1 10 12 0 > Year2 0 15 0 > Year3 0 0 20 > Year4 25 0 12 > Year5 15 25 12 > Year6 0 16 14 > Year7 0 10 0') > > I want create another variable( x4) based on the following condition. > > if x1 > 0 then x4 = x1; regardless of x2 and x3 values. > if x1 = 0 and x2 > 0 then x4 = x2; > if x1 = 0 and x2 = 0 then x4 = x3 > > The desired output looks like as follows > Year x1 x3 x2 x4 > Year1 10 12 0 10 > Year2 0 15 0 15 > Year3 0 0 20 20 > Year4 25 0 12 25 > Year5 15 25 12 15 > Year6 0 16 14 14 > Year7 0 10 0 10 > > Thank you in advance > > ______________________________________________ > 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.
Hi Val,
How about this:
cinmat<-
matrix(c(mydat$x1>0,mydat$x1==0&mydat$x2==0,mydat$x1==0&mydat$x2>0),
ncol=3)
mydat$x4<-rowSums(mydat[,c("x1","x3","x2")]*cinmat)
Jim
On Sat, Mar 25, 2017 at 2:56 PM, Val <valkremk at gmail.com>
wrote:> Hi all,
>
>
> I have several variables in a group and one group contains three
> variables. Sample of data ( Year, x1, x3 and x2)
>
> mydat <- read.table(header=TRUE, text=' Year x1 x3 x2
> Year1 10 12 0
> Year2 0 15 0
> Year3 0 0 20
> Year4 25 0 12
> Year5 15 25 12
> Year6 0 16 14
> Year7 0 10 0')
>
> I want create another variable( x4) based on the following condition.
>
> if x1 > 0 then x4 = x1; regardless of x2 and x3 values.
> if x1 = 0 and x2 > 0 then x4 = x2;
> if x1 = 0 and x2 = 0 then x4 = x3
>
> The desired output looks like as follows
> Year x1 x3 x2 x4
> Year1 10 12 0 10
> Year2 0 15 0 15
> Year3 0 0 20 20
> Year4 25 0 12 25
> Year5 15 25 12 15
> Year6 0 16 14 14
> Year7 0 10 0 10
>
> Thank you in advance
>
> ______________________________________________
> 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.