Domanda

Quando si converte un frame di dati con un fattore di misto e colonne numeriche a un XTS, tutti i miei dati viene convertito in stringhe. Questo non è un problema con i fattori, ma è estremamente fastidioso con i valori numerici. C'è una soluzione?

Ad esempio:

> 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"

Idealmente voglio la prima colonna di rimanere numerica, mentre il secondo viene convertito in una stringa. Le esigenze di soluzioni di essere completamente automatizzati, come sto lavorando con insiemi di dati con un numero elevato di colonne, e non si può sempre prevedere quali saranno fattore e che saranno numerico.

-

Modifica:

ho cercato di aggirare questo problema definendo la seguente funzione:

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)

}

ma quando si uniscono i due oggetti XTS, i dati della stringa viene convertito in AN:

> 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

Si tratta di un problema noto con il pacchetto XTS, o sto facendo qualcosa di sbagliato?

È stato utile?

Soluzione

Non si può fare questo come XTS richiede una matrice numerica.

Altri suggerimenti

Si tratta di una limitazione di progettazione. tenere presente che xts o zoo è fondamentalmente una matrice più indice. Non un indice dataframe plus.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top