[R] Automatic Recoding
David Winsemius
dwinsemius at comcast.net
Thu Sep 1 18:23:37 CEST 2011
On Sep 1, 2011, at 10:54 AM, Thomas Chesney wrote:
> I have a text file full of numbers (it's a edgelist for a graph) and
> I would like to recode the numbers as they are way too big to work
> with. So for instance the following:
>
> 676529098667 1000198767829
> 676529098667 100867672856227
> 676529098667 91098726278
> 676529098667 98928373
> 1092837363526 716172829
>
> would become:
>
> 0 1
> 0 2
> 0 3
> 0 4
> 5 6
>
> i.e. all 676529098667 would become 0, all 1000198767829 would become
> 1 etc.
Depending on how that set of numbers was entered see if this is helpful:
1) First entering across first then down.
x <- c(676529098667 , 1000198767829,
676529098667 , 100867672856227,
676529098667 , 91098726278,
676529098667 , 98928373,
1092837363526 ,716172829)
as.numeric(factor(x, levels=unique(x)) )
# [1] 1 2 1 3 1 4 1 5 6 7
2( Now entering first down then over.
x2 <- matrix(x, ncol=2, byrow=TRUE) # Matrices are column first
ordered.
as.numeric(factor(x2, levels=unique(c(x2))) ) # need c() to avoid
warning.
# [1] 1 1 1 1 2 3 4 5 6 7
> If I read all the values into a matrix, is there a pre-existing
> function that can do the recoding?
You can just subtract one from the factor results. The trick is to use
explicit levels determined to match the sort order you want. Other
wise the levels would be first collated.
--
David Winsemius, MD
West Hartford, CT
More information about the R-help
mailing list