Hi Allan,
Thank you for your reply. I have more than 4 Rows. I don't believe than it's a good solution, if I need to write down all of the values. I have about 200 Rows. Do you have any other solution?. Is there any package that I can use? Edwin > Date: Fri, 29 May 2009 09:59:40 +0100 > From: all...@cybaea.com > To: edwin_0...@msn.com > CC: r-help@r-project.org > Subject: Re: [R] IP-Address > > IP addresses are very (very!) difficult to parse and sort correctly > because there are all sorts of supported formats. Try to use something > like PostgreSQL instead: it is already implemented there. But if you > are sure all your data is of the n.n.n.n form, then something along the > lines of the following should basically work (I have chosen some more > interesting IP addresses for this): > > > a <- data.frame(cbind(id=c(138,138,138,138), > rank=c(29746,29746,29746,29746), > color=c("yellow","red","blue","red"), > status=c("no","yes","yes","no"), > > ip=c("162.131.58.26","2.131.58.16","2.2.58.10","162.131.58.17"))) > a > # id rank color status ip > # 1 138 29746 yellow no 162.131.58.26 > # 2 138 29746 red yes 2.131.58.16 > # 3 138 29746 blue yes 2.2.58.10 > # 4 138 29746 red no 162.131.58.17 > x <- matrix(unlist(lapply(strsplit(as.character(a$ip), ".", fixed=TRUE), > as.integer)), > ncol=4, byrow=TRUE) > a[order(x[,1],x[,2],x[,3],x[,4]),] > # id rank color status ip > # 3 138 29746 blue yes 2.2.58.10 > # 2 138 29746 red yes 2.131.58.16 > # 4 138 29746 red no 162.131.58.17 > # 1 138 29746 yellow no 162.131.58.26 > > > Getting rid of the conversions including the matrix(unlist) combo is > left as an exercise (it's too hot here....) > > Allan. > > edwin Sendjaja wrote: > > Hi, > > > > Is there any way to sort a tabel with a colum with IP-address? > > > > table: > > > > id rank color status ip > > 138 29746 yellow no 162.131.58.26 > > 138 29746 red yes 162.131.58.16 > > 138 29746 blue yes 162.131.58.10 > > 138 29746 red no 162.131.58.17 > > 138 29746 yellow no 162.131.58.14 > > 138 29746 red no 162.131.58.13 > > 138 29746 yellow no 162.132.58.15 > > 139 29746 green no 162.252.20.69 > > 140 29746 red yes 162.254.20.71 > > 141 29746 yellow no 163.253.7.153 > > 142 31804 green yes 163.253.20.114 > > 144 32360 black yes 161.138.45.226 > > .... > > > > > > Unfortunately, order doesn't work as I want. > > > > I found an half solusion from John: > > > > mysort <- function(x){ > > sort.helper <- function(x){ > > prefix <- strsplit(x, "[0-9]") > > prefix <- sapply(prefix, "[", 1) > > prefix[is.na(prefix)] <- "" > > suffix <- strsplit(x, "[^0-9]") > > suffix <- as.numeric(sapply(suffix, "[", 2)) > > suffix[is.na(suffix)] <- -Inf > > remainder <- sub("[^0-9]+", "", x) > > remainder <- sub("[0-9]+", "", remainder) > > if (all (remainder == "")) list(prefix, suffix) > > else c(list(prefix, suffix), Recall(remainder)) > > } > > ord <- do.call("order", sort.helper(x)) > > x[ord] > > } > > > > > > mysort (data$ip) captured only the ip-adresse. How can I capture the whole > > table and sorted?(ID rank color status ip) > > > > > > > > Thank you in advance. > > > > eddie > > > > > > > > _________________________________________________________________ > > > > > > [[alternative HTML version deleted]] > > > > ______________________________________________ > > 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. > > _________________________________________________________________ [[elided Hotmail spam]] [[elided Hotmail spam]] [[alternative HTML version deleted]] ______________________________________________ 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.