Apa perbedaan antara NaN dan NA?


48

Saya ingin tahu mengapa beberapa bahasa seperti R memiliki NA dan NaN. Apa perbedaannya atau apakah keduanya sama? Apakah benar-benar perlu memiliki NA?


5
Saya akan mengatakan NA lebih dari "placeholder"; NaN adalah untuk tujuan aritmatika (IEEE).
JM bukan ahli statistik

@ JM. cara yang baik untuk meringkas.
suncoolsu

dan ada juga Inf, yang berarti ekspresi seperti misalnya 1/0 ...
Karsten W.

Itu dijelaskan dalam dokumentasi di sini .
gung - Reinstate Monica

1
Saya pikir pertanyaan ini lebih cocok untuk stack overflow, tetapi pertanyaannya terlalu tua untuk dimigrasi.
Zach

Jawaban:


44

?

?

? NA

? NaN

Harus menjawab pertanyaan Anda.

Namun, singkatnya:

NaN berarti - Singkatan dari Bukan Angka00

NA umumnya ditafsirkan sebagai nilai yang hilang dan memiliki berbagai bentuk - NA_integer_, NA_real_, dll.

Oleh karena itu, NaN NA dan ada kebutuhan untuk NaN dan NA.


21
Dari catatan, is.na()kembali TRUEuntuk kedua NA dan NaN, yang berbeda dari is.nan()misalnya is.na(c(0/0,NA)) vs is.nan(c(0/0,NA)) .
chl

11

NA adalah untuk data yang hilang. NaN, seperti yang dikatakan JM adalah untuk tujuan aritmatika. NaN biasanya merupakan produk dari beberapa operasi aritmatika, seperti 0/0. NA biasanya dinyatakan sebelumnya, atau merupakan produk operasi ketika Anda mencoba mengakses sesuatu yang tidak ada:

 > a <- c(1,2)
 > a[3]
   [1] NA 

5

Saya pikir NA adalah 'Not Available', sementara NaN adalah 'Not a Number', meskipun ini lebih mnemonik daripada penjelasan. Ngomong-ngomong, saya tahu tidak ada bahasa selain R (mungkin Splus?) Yang memiliki keduanya. Matlab, misalnya, hanya memiliki NaN.


Anda membuat kesalahan ketik (kritis). "Na N adalah 'Bukan Angka'"
Peter Smit

@ Peter Smit: aduh, terima kasih. server X saya sedang menunda penekanan tombol ...
shabbychef

2
Beberapa bahasa memiliki konstruksi yang setara. Misalnya PHP dan Javascript memiliki null dan NaN.
nico

2

NA berarti kesalahan sudah ada ketika Anda mengimpor spreadsheet ke R. NaN berarti Anda menyebabkan kesalahan setelah mengimpor data. Ini adalah jenis kesalahan ketiga yang sangat sulit ditangkap.

:-)


3
apa dua yang pertama?
David LeBauer

Saya menjadi fasih, tetapi yang saya maksud adalah - NA adalah jenis kesalahan pertama, sering disebabkan oleh sesuatu dalam data yang diimpor menjadi jenis yang salah - misalnya bidang angka yang berisi tanda baca / huruf / spasi putih atau kesalahan ketik / variasi kasus di tingkat faktor. NaN adalah kesalahan kedua, yang lebih sering terjadi ketika Anda mentransformasikan data dalam R. Kesalahan ketiga adalah data yang memang memiliki nilai numerik, tetapi karena satu dan lain-lain salah, dan kurang segera terlihat. Sekali lagi, ini tidak dimaksudkan sebagai kategorisasi yang ketat, hanya pengamatan informal.
f1r3br4nd

0

NA = Tidak Tersedia

NaN = Bukan Angka

Saya pikir begitu kita memperluas akronim, itu harus jelas.


2
Selamat datang di CV! Terima kasih telah menjawab, tetapi harap baca jawaban yang ada terlebih dahulu, & pertimbangkan apakah Anda menambahkan sesuatu yang baru.
Scortchi
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.