2011-01-25 26 views
54

için dönüştürme Yeniden boyutlandırma paketini kullanarak bir veri çerçevesini işliyorum. Eriþim iþlevi kullanýldýnda, bu deðiþiklik sütunlarýmý oluþturuyor, ki bu bir problemdir, çünkü bu deðerlerin alt küme iþlemleri gerçekleþtirmek istediğim tamsayılar.Tamsayı

Bir faktörü bir tamsayıya zorlamanın bir yolu var mı? as.character() kullanmak onu doğru karaktere dönüştürecektir, ancak sonra hemen üzerinde bir işlem yapamıyorum ve as.integer() veya as.numeric(), sistemin o faktörü sakladığı ve yardımcı olmadığı şekilde çevirdiği sayıya dönüştürecektir.

Teşekkür ederiz!

Jeff

+2

Bu, http://stackoverflow.com/questions/3418128/r-how-to-convert-a-factor-to-an-integer-numeric-in-r-without-a-loss-of sayfasına benzer. -informat – Aaron

cevap

53

İki işlevi birleştirebilirsiniz; numerics için oradan karakterlere zorlamak:

> fac <- factor(c("1","2","1","2")) 
> as.numeric(as.character(fac)) 
[1] 1 2 1 2 
+0

Bunu denedim, ancak uyarı mesajını aldım: "NA'lar zorlama tarafından tanıtıldı." Ne anlama geliyor? –

+0

Veya bu sadece bazılarının başlamak için sayı olmadığı anlamına mı geliyor? –

+1

@Jeff Bu, bazı karakterlerin sayı olmadığı anlamına gelir, yani "as.numeric (....)' kullandığınızda "NA" ye dönüştürülür. 'NA''ya zorlanmakta olanı görmek için faktör değişkeninizle' fac' değiştirerek 'level (fac)' ve 'as.numeric (levels (fac)) 'a bakın. –

62

factor için yardım sayfasından doğrudan alıntı:

orijinal sayısal değerlere f bir faktör dönüşümü için as.numeric(levels(f))[f] tavsiye ve as.numeric(as.character(f)) göre biraz daha verimli olduğunu.

+0

#bazinga. okuma esastır! – d8aninja