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

  • InfinityWard

    InfinityWard

    19 EYLÜL 2006
  • MandMEvangelists

    MandMEvangel

    28 Ocak 2008
  • The10HourMan

    The10HourMan

    28 EYLÜL 2012