SORU
23 EKİM 2012, Salı


Okuma colClasses bağımsız değişkeni için belirttiğiniz Tarih biçimi.tablo/okuyun.csv

Soru:

Bir şekilde okuyun colClasses argümanı kullanarak Tarih biçimini belirtmek için var.tablo/okuyun.csv?

(Aldıktan sonra dönüştürebilirim farkındayım, ama bu gibi birçok tarihi sütun ile, daha kolay yapmak ithalat adımda)


Örnek:

Bir ben var .tarih ile csv formatında %d/%m/%Y sütun.

dataImport <- read.csv("data.csv", colClasses = c("factor","factor","Date"))

Bu dönüşüm yanlış olur. Örneğin, 15/07/2008 olur 0015-07-20.


Tekrarlanabilir kod:

data <- 
structure(list(func_loc = structure(c(1L, 2L, 3L, 3L, 3L, 3L, 
3L, 4L, 4L, 5L), .Label = c("3076WAG0003", "3076WAG0004", "3076WAG0007", 
"3076WAG0009", "3076WAG0010"), class = "factor"), order_type = structure(c(3L, 
3L, 1L, 1L, 1L, 1L, 2L, 2L, 3L, 1L), .Label = c("PM01", "PM02", 
"PM03"), class = "factor"), actual_finish = structure(c(4L, 6L, 
1L, 2L, 3L, 7L, 1L, 8L, 1L, 5L), .Label = c("", "11/03/2008", 
"14/08/2008", "15/07/2008", "17/03/2008", "19/01/2009", "22/09/2008", 
"6/09/2007"), class = "factor")), .Names = c("func_loc", "order_type", 
"actual_finish"), row.names = c(NA, 10L), class = "data.frame")


write.csv(data,"data.csv", row.names = F)                                                        

dataImport <- read.csv("data.csv")
str(dataImport)
dataImport

dataImport <- read.csv("data.csv", colClasses = c("factor","factor","Date"))
str(dataImport)
dataImport

Ve burada bir çıkış gibi görünüyor:

code output

CEVAP
23 EKİM 2012, Salı


Bir dize kabul eder ve bir istediğiniz Tarih biçimini kullanarak dönüştüren kendi işlevi yazabilirsiniz, setAs as bir yöntem olarak ayarlamak için kullanın. Sonra colClasses bir parçası olarak işlev kullanabilirsiniz.

Deneyin:

setAs("character","myDate", function(from) as.Date(from, format="%d/%m/%Y") )

tmp <- c("1, 15/08/2008", "2, 23/05/2010")
con <- textConnection(tmp)

tmp2 <- read.csv(con, colClasses=c('numeric','myDate'), header=FALSE)
str(tmp2)

Eğer verileriniz için çalışmak, gerekirse değiştirin.

- - - Edit

İstersin setClass('myDate') ilk önlemek için Uyarı (umursamayacağını uyarı, ama can almak can sıkıcı eğer bunu sık sık yapar ve bu basit bir çağrı alır yol açabilir).

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BDGcustoms

    BDGcustoms

    24 NİSAN 2011
  • BroadCity

    BroadCity

    10 ŞUBAT 2010
  • DigitalRev TV

    DigitalRev T

    30 AĞUSTOS 2007