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

  • FRED

    FRED

    1 EKİM 2005
  • Joseph Herscher

    Joseph Hersc

    14 Mart 2007
  • LatinNinja99

    LatinNinja99

    28 EKİM 2011