sql >> データベース >  >> RDS >> Mysql

IPアドレス(IPv4)をRの整数に変換します

    必要な変換について完全に具体的ではなかったので、10進数に適切と思われる値を掛けました(3桁の項目は、実際には「基数256」の数値に相当する桁であり、基数10で再表示されたと考えています)。他の場所で提案されているように、場所の順序を逆にしたい場合は、両方のソリューションで「vals」のインデックスを逆にします

     convIP <- function(IP) { vals <- read.table(text=as.character(IP), sep=".")
                   return( vals[1] + 256*vals[2] + 256^2*vals[3] + 256^3*vals[4]) }
    
    > convIP(dat$IP)
              V1
    1 2476281533
    2  134990147
    3 2352289344
    4  173345204
    5 2122844258
    6 1153107520
    

    (通常、テストを実行できるように、正解と思われるものを指定することをお勧めします。上記のBertelsonのコメントはより高速で、暗黙的に1000、1000 ^ 2、1000 ^ 3を要素として使用します。)

    コードを単純化することに取り組んでいますが、Reduce("+", ...)を使用する必要があるのではないかと心配しています。 それをより複雑にするかもしれません。 sumは使用できません ベクトル化されていないためです。

     convIP <- function(IP) { vals <- read.table(text=as.character(IP), sep=".")
                    return( Reduce("+", vals*256^(3:0))) }
    
    > convIP(dat$IP)
    [1] 5737849088    5112017 2717938944    1245449 3925902848   16449610
    



    1. SQLServerでの常時接続の可用性グループの設定と構成

    2. com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:mysql内

    3. CakePHPが保存時にデータをエスケープするのを防ぐにはどうすればよいですか?

    4. ORDERBYクエリを最適化する