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
______________________________________________
R-help@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.