Hi Hana, This is a bit more difficult, but the same basic steps apply. See the comments for an explanation. When you submit a problem like this, it is a lot easier if you send the output from "dput" (e.g. dput(df1)) or set your data frames up with "read.table" like I have done in the example below. It make it lots easier for anyone who wants to reply to see what your dataset looks like and input that dataset to devise a solution. I have made some assumptions about marking the rows to be altered and the arithmetic to do on those rows. What follows may not be as general a solution as you want:
df1<-read.table(text= "SNPID OA EA snp001 C A snp002 G A snp003 C A snp004 G A snp005 C T", header=TRUE,stringsAsFactors=FALSE) df2<-read.table(text= "SNPID OA EA id00001 id00002 id00003 id00004 id00005 snp001 A C 1.01 2 0.97 1.97 1.99 snp002 A G 1.02 2 1 2 2 snp003 C A 1 1.03 2 0 1 snp004 A G 1.02 1.99 2 1.02 1.98 snp005 C T 1 0 1.01 1 1", header=TRUE,stringsAsFactors=FALSE) # get a logical vector of the different XA values reversals<-df1$EA != df2$EA | df1$OA != df2$OA reversals # set a variable to the maximum value of idxxxxx # just to make the code easier to understand maxid<-2 # create a copy of df2 dfnew<-df2 # now swap the XA columns and reflect the # idxxxxxx values of the rows in which # EA and OA are different between df1 and df2 # here I have looped through the rows nrows<-dim(dfnew)[1] idcols<-4:8 XAcols<-2:3 for(i in 1:nrows) { if(reversals[i]) { dfnew[i,XAcols]<-rev(dfnew[i,XAcols]) dfnew[i,idcols]<-maxid-dfnew[i,idcols] } } dfnew Jim On Mon, Jun 13, 2022 at 12:09 AM anteneh asmare <hanatez...@gmail.com> wrote: > > Dear Jim, Morning I have the same issue regarding comparing and > swapping the value of columns fro two different data frames. > I have the following two data frames > Data frame 1 > "SNPID" "OA" "EA" > "snp001" "C" "A" > "snp002" "G" "A" > "snp003" "C" "A" > "snp004" "G" "A" > "snp005" "C" "T" > > Data frame 2 > SNPID OA EA id00001 id00002 id00003 id00004 id00005 > snp001 A C 1.01 2 0.97 > 1.97 1.99 > snp002 A G 1.02 2 1 > 2 2 > snp003 C A 1 1.03 2 > 0 1 > snp004 A G 1.02 1.99 2 > 1.02 1.98 > snp005 C T 1 0 > 1.01 > 1 1 > > I want to if OA s and EAs in data frame 2 is the same as OAs and EAs > data frame 1 in such case I want to keep all information in data > fram2 as it is . However if OA s and EAs in data frame 2 is > different from OAs and EAs data frame 1, I want to change OA s and > EAs in data frame 2 to OAs and EAs data frame 1 and I want to > redefine the values of the dosages (ids) of the variant (the dosage d > for the i-th individual and the j-th variant would become d_ij > new=2-dij. > Dosage [j,]=2-dosage[j,] > My desire data frame looks like > Dataframe new > SNPID" "OA" "EA" id00001 id00002 id00003 id00004 id00005 > "snp001" "C" "A" 2-1.01 2- 2 2- 0.97 > 2-1.97 > 2-1.99 > "snp002" "G" "A" 2- 1.02 2- 2 > 2-1 > 2-2 2- 2 > "snp003" "C" "A" 1 1.03 > 2 > 0 1 > "snp004" "G" "A" 2-1.02 2-1.99 > 2-2 2-1.02 2-1.98 > "snp005" "C" "T" 1 0 > 1.01 1 1 > can you help me the r code for the above. > Kind regards, > Hana > > > On 6/12/22, hanatezera <hanatez...@gmail.com> wrote: > > Dear Jim, Thanks a lot this is exactly i am looking for.Stay safe and > > blessed !Best,Hana > > -------- Original message --------From: Jim Lemon <drjimle...@gmail.com> > > Date: 6/12/22 6:43 AM (GMT+03:00) To: hanatezera <hanatez...@gmail.com> > > Cc: r-help mailing list <r-help@r-project.org> Subject: Re: [R] Changing > > sign of columns and values Hi Hana,I didn't look closely. The simplest rule > > that I can see is that theletters (nucleotides?) should be swapped if there > > has been a signchange in the beta value. > > Therefore:mydf<-read.table(text="IDnumber OA EA beta1 C A > > -0.052 G A 0.0983 G T > > -0.789",header=TRUE,stringsAsFactors=FALSE)# logical vector marking the rows > > to be swappedswap_letters<-mydf$beta < 0# save the OA values to be > > swappednewEA<-mydf$OA[swap_letters]# change the OAs to > > EAsmydf$OA[swap_letters]<-mydf$EA[swap_letters]# set the relevant EA values > > to the old OA valuesmydf$EA[swap_letters]<-newEA# change the beta > > valuesmydf$beta<-abs(mydf$beta)mydfJimOn Sun, Jun 12, 2022 at 9:11 AM > > hanatezera <hanatez...@gmail.com> wrote:>> Dear jim thanks for your help! I > > want to change also the value of OA and EF simultaneously.> For instance i > > am looking the data> mydf> IDnumber OA EA beta> 1 1 A C 0.050> > > 2 2 G A 0.098> 3 3 T G 0.789>> Best,> Hana>>>> -------- > > Original message --------> From: Jim Lemon <drjimle...@gmail.com>> Date: > > 6/12/22 1:59 AM (GMT+03:00)> To: hanatezera <hanatez...@gmail.com>, r-help > > mailing list <r-help@r-project.org>> Subject: Re: [R] Changing sign of > > columns and values>> Hi Hana,> I think this is what you want:>> # first read > > in your example> mydf<-read.table(text=> "IDnumber OA EA beta> 1 > > C A -0.05> 2 G A 0.098> 3 G T > > -0.789",> header=TRUE,stringsAsFactors=FALSE)> # check it> mydf> IDnumber OA > > EA beta> 1 1 C A -0.050> 2 2 G A 0.098> 3 3 G > > T -0.789> # change values of mydf$beta to absolute values> > > mydf$beta<-abs(mydf$beta)> mydf> IDnumber OA EA beta> 1 1 C A > > 0.050> 2 2 G A 0.098> 3 3 G T 0.789>> Jim>> On Sun, Jun > > 12, 2022 at 8:27 AM hanatezera <hanatez...@gmail.com> wrote:> >> > I have > > the following data set in data frameIDnumber OA EA > > beta1 C A -0.052 > > G A 0.0983 G T > > -0.789....I want to change the sign of negative beta. If the negative value > > change to postive i want to switch its EA and OA.My desire result will > > beIDnumber OA EA beta1 A C > > 0.052 G A > > 0.0983 T G 0.789....Any one can help > > me with r codes? kind regards,Hana> > [[alternative HTML version > > deleted]]> >> > ______________________________________________> > > > R-help@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. ______________________________________________ R-help@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.