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

  • LG Mobile Global

    LG Mobile Gl

    2 EYLÜL 2010
  • SaMmM123

    SaMmM123

    3 Mayıs 2006
  • Sergio Lafuente Rubio

    Sergio Lafue

    11 Aralık 2008