Saya ingin mengonversi variabel faktor menjadi yang numerik tetapi as.numeric
tidak memiliki efek yang saya harapkan.
Di bawah ini saya mendapatkan ringkasan statistik untuk versi numerik dari variabel berdasarkan pada variabel asli. Berarti terus menghitung dengan 1 ... mungkin (dia berspekulasi) tingkat faktor memiliki kedua nama dan angka, dan saya mengharapkan nilai variabel baru berasal dari nama ketika as.numeric
dirancang untuk menggunakan angka?
> describe.by(as.numeric(df$sch), df$sch)
group:
var n mean sd median trimmed mad min max range skew kurtosis se
1 1 5389 1 0 1 1 0 1 1 0 NaN NaN 0
---------------------------------------------------------
group: 001
var n mean sd median trimmed mad min max range skew kurtosis se
1 1 19 2 0 2 2 0 2 2 0 NaN NaN 0
---------------------------------------------------------
group: 002
var n mean sd median trimmed mad min max range skew kurtosis se
1 1 54 3 0 3 3 0 3 3 0 NaN NaN 0
---------------------------------------------------------
r
data-transformation
Michael Bishop
sumber
sumber
Jawaban:
Itu benar:
as.numeric(factor)
mengembalikan angka yang diberikan R ke tingkat faktor itu. Kamu bisa mencobaas.numeric(as.character(factor))
sumber
as.numeric(levels(f))[f]
dianjurkan dan sedikit lebih efisien daripadaas.numeric(as.character(f))
Ini adalah FAQ 7.10 dalam R Pertanyaan yang Sering Diajukan. Ya faktor disimpan sebagai bilangan bulat dari 1 ke jumlah level dan as.numeric memberikan kode yang mendasarinya. FAQ memberikan 2 cara untuk mengkonversi ke numerik.
Namun, biasanya ini karena ketika Anda membaca data di sana ada sesuatu tentang data Anda yang menyebabkan R memperlakukannya sebagai faktor, bukan angka (seringkali karakter non-numerik yang tersesat). Seringkali lebih baik untuk memperbaiki data mentah (konversi akan mengubah bagian non-numerik menjadi NA) atau menggunakan argumen colClasses jika menggunakan read.table atau yang serupa.
sumber