[R] simple recoding problem, but a trouble !
David Winsemius
dwinsemius at comcast.net
Sun Feb 20 04:28:37 CET 2011
On Feb 19, 2011, at 10:19 PM, Umesh Rosyara wrote:
> Thank you David
>
> I was able to create dataframe and restore names with the following:
>
> dfr1 <- data.frame(t( apply(dfr, 1, func) ))
> names(dfr1) <- c("marker1a","marker1b", "marker2a",
> "marker2b" ,"marker3a", "marker3b")
> Still I wonder if there is easier way to restore the names, in
> situations where there are 1000's of variables making the list as
> above might be tidious.
Well, we wouldn't want life to be tidious, now, would we?
> rep(names(dfr), each=2)
[1] "marker1" "marker1" "marker2" "marker2"
> rep(letters[1:2], each=2)
[1] "a" "a" "b" "b"
> paste(rep(names(dfr), each=2), rep(letters[1:2], each=2), sep="")
[1] "marker1a" "marker1a" "marker2b" "marker2b"
--
David.
> Thank you for solving my problem. I appreciate it.
> Umesh R
> From: David Winsemius [mailto:dwinsemius at comcast.net]
> Sent: Saturday, February 19, 2011 10:28 AM
> To: Umesh Rosyara
> Cc: 'Joshua Wiley'; r-help at r-project.org
> Subject: Re: [R] simple recoding problem, but a trouble !
>
>
> On Feb 19, 2011, at 8:40 AM, Umesh Rosyara wrote:
>
> > Just a correction. My expected outdata frame was somehow distorted
> > to a
> > single, one column. So correct one is:
> >
> > marker1a markerb marker2a marker2b
> > 1 1 1 1
> > 1 3 1 3
> > 3 3 3 3
> > 3 3 3 3
> > 1 3 1 3
> > 1 3 1 3
>
>
> func <- function(x) {sapply( strsplit(x, ""),
> match, table= c("A", NA, "C"))}
> t( apply(dfr, 1, func) )
>
> [,1] [,2] [,3] [,4]
> [1,] 1 1 1 1
> [2,] 1 3 1 3
> [3,] 3 3 3 3
> [4,] 3 3 3 3
> [5,] 1 3 1 3
> [6,] 1 3 1 3
>
>
> It's amatrix rather than a dataframe and doesn't have colnames but
> that should be trivial to fix.
>
> >
> > Thanks;
> >
> > Umesh R
> >
> > _____
> >
> > From: Umesh Rosyara [mailto:rosyaraur at gmail.com]
> > Sent: Friday, February 18, 2011 10:09 PM
> > To: 'Joshua Wiley'
> > Cc: 'r-help at r-project.org'
> > Subject: RE: [R] recoding a data in different way: please help
> >
> >
> > Hi Josh and R community members
> >
> > Thank you for quick response. I am impressed with the help.
> >
> > To solve my problems, I tried recode options and I had the following
> > problem
> > and which motivated me to leave it. Thank you for remind me the
> option
> > again, might help to solve my problem in different way.
> >
> > marker1 <- c("AA", "AC", "CC", "CC", "AC", "AC")
> >
> > marker2 <- c("AA", "AC", "CC", "CC", "AC", "AC")
> >
> > dfr <- data.frame(cbind(marker1, marker2))
> >
> > Objective: replace A with 1, C with 3, and split AA into 1 1 (two
> > columns
> > numeric). So the intended output for the above dataframe is:
> >
> >
> >
> > marker1a
> > markerb
> > marker2a
> > marker2b
> >
> > 1
> > 1
> > 1
> > 1
> >
> > 1
> > 3
> > 1
> > 3
> >
> > 3
> > 3
> > 3
> > 3
> >
> > 3
> > 3
> > 3
> > 3
> >
> > 1
> > 3
> > 1
> > 3
> >
> > 1
> > 3
> > 1
> > 3
> >
> > I tried the following:
> >
> > for(i in 1:length(dfr))
> > {
> > dfr[[i]]=recode (dfr[[i]],"c('AA')= '1,1'; c('AC')= '1,3';
> > c('CA')=
> > '1,3'; c('CC')= '3,3' ")
> > }
> >
> > write.table(dfr,"dfr.out", sep=" ,", col.names = T)
> > dfn=read.table("dfr.out",header=T, sep="," )
> >
> > # just trying to cheat R, unfortunately the marker1 and marker
> columns
> > remained non-numeric, even when opened in excel !!
> >
> >
> > Unfortunately I got the following result !
> >
> > marker1 marker2
> > 1 1,1 1,1
> > 2 1,2 1,2
> > 3 2,2 2,2
> > 4 2,2 2,2
> > 5 1,2 1,2
> > 6 1,2 1,2
> >
> >
> > Sorry to bother all of you, but simple things are being complicated
> > these
> > days to me.
> >
> > Thank you so much
> > Umesh R
> >
> >
> > _____
> >
> > From: Joshua Wiley [mailto:jwiley.psych at gmail.com]
> > Sent: Friday, February 18, 2011 12:15 AM
> > Cc: r-help at r-project.org
> > Subject: Re: [R] recoding a data in different way: please help
> >
> >
> >
> > Dear Umesh,
> >
> > I could not figure out exactly what your recoding scheme was, so I
> do
> > not have a specific solution for you. That said, the following
> > functions may help you get started.
> >
> > ?ifelse # vectorized and different from using if () statements
> > ?if #
> > ?Logic ## logical operators for your tests
> > ## if you install and load the "car" package by John Fox
> > ?recode # a function for recoding in package "car"
> >
> > I am sure it is possible to string together some massive series of
> if
> > statements and then use a for loop, but that is probably the
> messiest
> > and slowest possible way. I suspect there will be faster, neater
> > options, but I cannot say for certain without having a better feel
> for
> > how all the conditions work.
> >
> > Best regards,
> >
> > Josh
> >
> > On Thu, Feb 17, 2011 at 6:21 PM, Umesh Rosyara <rosyaraur at gmail.com>
> > wrote:
> >> Dear R users
> >>
> >> The following question looks simple but I have spend alot of time
> >> to solve
> >> it. I would highly appeciate your help.
> >>
> >> I have following dataset from family dataset :
> >>
> >> Here we have individuals and their two parents and their marker
> >> scores
> >> (marker1, marker2,....and so on). 0 means that their parent
> >> information
> > not
> >> available.
> >>
> >>
> >> Individual Parent1 Parent2 mark1 mark2
> >> 1 0 0 12 11
> >> 2 0 0 11 22
> >> 3 0 0 13 22
> >> 4 0 0 13 11
> >> 5 1 2 11 12
> >> 6 1 2 12 12
> >> 7 3 4 11 12
> >> 8 3 4 13 12
> >> 9 1 4 11 12
> >> 10 1 4 11 12
> >>
> >> I want to recode mark1 and other mark2.....and so on column by
> >> looking
> >> indvidual parent (Parent1 and Parent2).
> >>
> >> For example
> >>
> >> Take case of Individual 5, who's Parent 1 is 1 (has mark1 score 12)
> >> and
> >> Parent 2 is 2 (has mark1 score 11). Individual 5 has mark1 score
> 11.
> > Suppose
> >> I have following condition to recode Individual 5's mark1 score:
> >>
> >> For mark1 variable, If Parent1 score "11" and Parent2 score "22"
> and
> > recode
> >> indvidual 5's score, "12"=1, else 0
> >> If Parent1 score "12" and Parent2
> >> score
> >> "22" and recode individual 5's score, "22"=1, "12"= 0.5, else 0
> >> .........................more
> > conditions
> >>
> >> Similarly the pointer should move from individual 5 to n
> >> individuals at
> > the
> >> end of the file.
> >>
> >> Thank you in advance
> >>
> >> Umesh R
> >>
> >>
> >>
> >>
> >>
> >> [[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.
> >>
> >
> >
> >
> > --
> > Joshua Wiley
> > Ph.D. Student, Health Psychology
> > University of California, Los Angeles
> > http://www.joshuawiley.com/
> >
> > _____
> >
> > No virus found in this message.
> > Checked by AVG - www.avg.com
> >
> >
> >
> > [[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
>
> No virus found in this message.
> Checked by AVG - www.avg.com
> Version: 10.0.1204 / Virus Database: 1435/3453 - Release Date:
> 02/19/11
>
David Winsemius, MD
West Hartford, CT
More information about the R-help
mailing list