Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Konversikan alamat IP (IPv4) menjadi Integer di R

Anda tidak sepenuhnya spesifik tentang konversi apa yang Anda inginkan, jadi saya mengalikan nilai desimal dengan apa yang saya pikir mungkin sesuai (berpikir tiga item digit sebenarnya setara dengan digit dalam angka "basis 256" kemudian ditampilkan kembali di basis 10). Jika Anda ingin urutan lokasi dibalik, seperti yang saya lihat disarankan di tempat lain, Anda akan membalikkan pengindeksan 'vals' di kedua solusi

 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

(Biasanya praktik TI yang lebih baik untuk menentukan apa yang menurut Anda sebagai jawaban yang benar sehingga pengujian dapat dilakukan. Komentar Bertelson di atas akan lebih cepat dan secara implisit menggunakan 1000, 1000^2 dan 1000^3 sebagai faktornya.)

Saya mencoba menyederhanakan kode tetapi takut perlu menggunakan Reduce("+", ...) dapat membuatnya lebih kompleks. Anda tidak dapat menggunakan sum karena tidak divektorkan.

 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hubungan satu-ke-banyak SQL - Bagaimana cara MEMILIH baris tergantung pada beberapa properti ke banyak?

  2. MYSQL - Satu Kolom Direferensikan ke Beberapa Tabel

  3. Snow Leopard + Ruby 1.9.1 + Permata MySQL =Masalah besar

  4. Peringatan:mysql_query() mengharapkan parameter 2 menjadi sumber daya, boolean diberikan di C:\wamp\www\pyrll\emlhome.php pada baris 15

  5. Bagaimana menemukan lokasi database MySQL di hard disk Anda?