[R] Changing sign of columns and values

anteneh asmare h@n@tezer@ @end|ng |rom gm@||@com
Mon Jun 13 16:38:58 CEST 2022


Dear, Jim I try the following codes but I got an error
Dfm1<-data.table(Dfm1)
# the names of the columns to be multiplied by BETA
ID_names <- paste0("ID",4:8)
# the names of the new columns that have been multiplied by beta
new_ID_names <- paste0("new_",ID_names)
##### Now with a simple command we get the desired multiplication
datfm[, (new_ID_names) := .SD *BETA, .SDcols = ID_names]
datfm
str(datfm)
##### The PRS for each individual can be calculated using the colSums
function in base R:
PRS<-Dfm1[, colSums(.SD), .SDcols = new_ID_names]
PRS

On 6/13/22, anteneh asmare <hanatezera using gmail.com> wrote:
> Dear Jim,  Good morning, hope you are doing very well, Here I want to
> calculate the specific parameters based on the previous data. I have
> attached below.
> can you help me  with r functions or code to solve the above equations
> Kind regards,
> Hana
>
>
> On 6/13/22, Jim Lemon <drjimlemon using gmail.com> wrote:
>> 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 <hanatezera using 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 <hanatezera using 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
>>> > <drjimlemon using gmail.com>
>>> > Date: 6/12/22  6:43 AM  (GMT+03:00) To: hanatezera
>>> > <hanatezera using gmail.com>
>>> > Cc: r-help mailing list <r-help using 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 <hanatezera using 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 <drjimlemon using gmail.com>>
>>> > Date:
>>> > 6/12/22 1:59 AM (GMT+03:00)> To: hanatezera <hanatezera using gmail.com>,
>>> > r-help
>>> > mailing list <r-help using 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 <hanatezera using 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 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.
>>
>



More information about the R-help mailing list