Frage

Wenn ein Datenrahmen mit gemischtem Faktor und numerischen Spalten zu einem xts Umwandlung, wird alle meine Daten in Strings umgewandelt. Dies ist kein Problem mit den Faktoren, aber es ist sehr ärgerlich mit der Numerik. Gibt es eine Abhilfe?

Zum Beispiel:

> x

          marketTimestamp price  id
1 2010-12-17 11:38:31.100 83.89 b-0
2 2010-12-17 11:38:31.100 83.88 b-1
3 2010-12-17 11:38:31.100 83.87 b-2
4 2010-12-17 11:38:31.300 83.91 o-0
5 2010-12-17 11:38:31.300 83.92 o-1
6 2010-12-17 11:38:31.300 83.93 o-2

> as.xts(x[,-1],as.POSIXct(x[,1]))

                    price   id   
2010-12-17 11:38:31 "83.89" "b-0"
2010-12-17 11:38:31 "83.88" "b-1"
2010-12-17 11:38:31 "83.87" "b-2"
2010-12-17 11:38:31 "83.91" "o-0"
2010-12-17 11:38:31 "83.92" "o-1"
2010-12-17 11:38:31 "83.93" "o-2"

Im Idealfall möchte ich die erste Spalte numerisch bleiben, während die zweite in einen String umgewandelt wird. Die Lösung Bedürfnisse vollständig automatisiert sein, da ich mit Datensätzen mit einer großen Anzahl von Spalten arbeite, und ich kann nicht immer vorhersagen, welche diejenigen Faktor sein wird, und die numerisch sein wird.

-

Edit:

Ich habe versucht, dieses Problem zu umgehen, indem Sie die folgende Funktion definieren:

to.xts <- function(data) {

    timestamp <- as.POSIXct(data[,1])
    coredata <- data[,-1]

    headers <- names(coredata)
    data.type <- c()

    for (header in headers) {
        data.type[headers==header] <- class(coredata[[header]])
    }

    data.factor  <- xts(coredata[,data.type=="factor"],timestamp)
    data.numeric <- xts(coredata[,data.type=="numeric"],timestamp)

    data.xts <- cbind(data.factor,data.numeric)

}

aber wenn die beiden XTS Objekte verschmelzen, wird der String-Daten zu NAs konvertiert:

> x
                    id    side 
2010-12-17 11:38:31 "b-0" "BID"
2010-12-17 11:38:31 "b-1" "BID"
2010-12-17 11:38:31 "b-2" "BID"
> y
                    price
2010-12-17 11:38:31 83.89
2010-12-17 11:38:31 83.88
2010-12-17 11:38:31 83.87
> merge(x,y)
                    id side price
2010-12-17 11:38:31 NA   NA 83.89
2010-12-17 11:38:31 NA   NA 83.88
2010-12-17 11:38:31 NA   NA 83.87
Warning message:
In merge.xts(x, y) : NAs introduced by coercion

Ist das ein bekanntes Problem mit dem XTS-Paket, oder bin ich etwas falsch zu machen?

War es hilfreich?

Lösung

Sie können dies als xts nicht eine numerische Matrix erfordert.

Andere Tipps

Es ist eine Einschränkung von Entwurf. bedenken Sie, dass xts oder Zoo ist im Grunde eine Matrix Plus Index. kein Datenrahmen und Index.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top