Je reçois des données dans un fichier .rData. Le format est un objet xts
en mode caractère. (Je me rends compte que c'est un format inhabituel, mais je n'ai aucun contrôle sur elle)Comment puis-je convertir une matrice de chaînes en un fichier?
> head(trades)
SYMBOL EX PRICE SIZE COND BID BIDSIZ OFR
2012-05-04 09:30:00 "BAC" "T" "7.89" "38538" "F" "7.89" "523" "7.9"
2012-05-04 09:30:01 "BAC" "Z" "7.885" "288" "@" "7.88" "61033" "7.9"
2012-05-04 09:30:03 "BAC" "X" "7.89" "1000" "@" "7.88" "1974" "7.89"
2012-05-04 09:30:07 "BAC" "T" "7.89" "19052" "F" "7.88" "1058" "7.89"
2012-05-04 09:30:08 "BAC" "Y" "7.89" "85053" "F" "7.88" "108101" "7.9"
2012-05-04 09:30:09 "BAC" "D" "7.8901" "10219" "@" "7.89" "268" "7.9"
> mode(trades)
'character'
Je voudrais traiter ces données en convertissant en un format Saner, à savoir un Tibble, pour que je puisse stocker les colonnes que datetimes, doubles et entiers.
J'ai réussi à y parvenir avec le code suivant:
> trades_ = bind_cols(data_frame(DATE=index(trades)), as_data_frame(coredata(trades))) %>%
mutate_at(as.numeric, .cols=vars(PRICE, BID, OFR)) %>%
mutate_at(as.integer, .cols=vars(SIZE, BIDSIZ, OFRSIZ))
> head(trades_)
# A tibble: 6 × 10
DATE SYMBOL EX PRICE SIZE COND BID BIDSIZ OFR
<dttm> <chr> <chr> <dbl> <int> <chr> <dbl> <int> <dbl>
1 2012-05-04 09:30:00 BAC T 7.8900 38538 F 7.89 523 7.90
2 2012-05-04 09:30:01 BAC Z 7.8850 288 @ 7.88 61033 7.90
3 2012-05-04 09:30:03 BAC X 7.8900 1000 @ 7.88 1974 7.89
4 2012-05-04 09:30:07 BAC T 7.8900 19052 F 7.88 1058 7.89
5 2012-05-04 09:30:08 BAC Y 7.8900 85053 F 7.88 108101 7.90
6 2012-05-04 09:30:09 BAC D 7.8901 10219 @ 7.89 268 7.90
Je me demande s'il y a déjà une fonction intégrée pour cela. Quelque chose qui regarde chaque colonne de la matrice trades
et détermine s'il s'agit d'une colonne d'entiers, doubles, etc et le convertit au type approprié.
C'est le genre de chose qu'un analyseur csv ferait.
'? Type.convert', qui est comme vous l'aurez deviné, utilisé comme une fonction d'assistance pour les' 'read.csv' read.table' etc. – thelatemail
Vous êtes probablement mieux fixer explicitement les types comme celui-ci . Le suivi des bogues lorsque l'ordinateur devine mal peut être une douleur. –
@HongOoi: Je pense que vous pourriez avoir raison, 'type.convert' n'a pas aimé' "1e + 05" 'dans la colonne' SIZE' ... – user357269