SORU
18 ŞUBAT 2010, PERŞEMBE


Nasıl bir kare sütun veri türü sayısal dönüştürmek için?

Nasıl sayısal bir veri türü için bir kare sütun dönüştürme?

CEVAP
19 ŞUBAT 2010, Cuma


(Hala) kimse onay işareti var bu yana, çoğunlukla numeric dönüştürmek istediğini belirtildi değil çünkü aklımda bazı pratik bir sorun olduğunu sanıyorum. Görevinizi tamamlamak için transform fonksiyon atanması gerektiğini öneriyorum.

Şimdi bazı göstermek üzereyim "dönüşüm anomali":

# create dummy data.frame
d <- data.frame(char = letters[1:5], 
                fake_char = as.character(1:5), 
                fac = factor(1:5), 
                char_fac = factor(letters[1:5]), 
                num = 1:5, stringsAsFactors = FALSE)

Bize data.frame Bir Bakış atalım

> d
  char fake_char fac char_fac num
1    a         1   1        a   1
2    b         2   2        b   2
3    c         3   3        c   3
4    d         4   4        d   4
5    e         5   5        e   5

ve bizi yönetmesine izin:

> sapply(d, mode)
       char   fake_char         fac    char_fac         num 
"character" "character"   "numeric"   "numeric"   "numeric" 
> sapply(d, class)
       char   fake_char         fac    char_fac         num 
"character" "character"    "factor"    "factor"   "integer" 

Şimdi muhtemelen kendinize sorun . ben^>"Nerede bir anormallik var?"Peki, Ar-oldukça tuhaf şeyler çarptı ettim, ve bu değildiren şaşırtıcı şey, ama özellikle yatağa atmadan önce bunu okursanız karıştırmayın.

O da şu: ilk iki sütun character. Kasten 2 aradımnd15**. Dirk cevap olarak " yaratan bir character bu değişken benzerlik nokta. Aslında numerical vektör character dönüştürülür. 3rdve 4thsütun factor ve son bir "saf" numeric. vardır

transform fonksiyonu kullanmak, numeric ama char değişken içine fake_char dönüştürebilirsiniz.

> transform(d, char = as.numeric(char))
  char fake_char fac char_fac num
1   NA         1   1        a   1
2   NA         2   2        b   2
3   NA         3   3        c   3
4   NA         4   4        d   4
5   NA         5   5        e   5
Warning message:
In eval(expr, envir, enclos) : NAs introduced by coercion

ama eğer aynı şeyi yaparsan fake_char char_fac, şanslı, ve uzakta hiçbir şey NA: var

> transform(d, fake_char = as.numeric(fake_char), 
               char_fac = as.numeric(char_fac))

  char fake_char fac char_fac num
1    a         1   1        1   1
2    b         2   2        2   2
3    c         3   3        3   3
4    d         4   4        4   4
5    e         5   5        5   5

Dönüşüm data.frame Kaydet ve mode class için onay: var

> D <- transform(d, fake_char = as.numeric(fake_char), 
                    char_fac = as.numeric(char_fac))

> sapply(D, mode)
       char   fake_char         fac    char_fac         num 
"character"   "numeric"   "numeric"   "numeric"   "numeric" 
> sapply(D, class)
       char   fake_char         fac    char_fac         num 
"character"   "numeric"    "factor"   "numeric"   "integer"

Yani, sonuç:. ben^>Evet, numeric bir character vektör dönüştürebilirsiniz, ancak bu unsurlar "Cabrio" numeric.Eğer vektör character sadece bir öğe varsa, numerical bir vektör dönüştürmeye çalışırken hata alırsınız.

Ve sadece benim açımdan kanıtlamak için:

> err <- c(1, "b", 3, 4, "e")
> mode(err)
[1] "character"
> class(err)
[1] "character"
> char <- as.numeric(err)
Warning message:
NAs introduced by coercion 
> char
[1]  1 NA  3  4 NA

Ve şimdi, sadece zevk için (ya da uygulama), Bu komut çıktısını tahmin etmeye çalışın:

> fac <- as.factor(err)
> fac
???
> num <- as.numeric(fac)
> num
???

Biraz Patrick Burns getirmedi! =)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:
R

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • girleffect

    girleffect

    20 Mayıs 2008
  • njhaley

    njhaley

    24 NİSAN 2006
  • YouChewBu

    YouChewBu

    26 Ocak 2009