我在.rData文件中給出了一些數據。格式是字符模式下的xts
對象。 (I意識到這是一個不尋常的格式,但我有在它沒有控制)如何將字符串矩陣轉換爲粗體?
> 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'
我想通過轉換成理智格式,即tibble來處理這些數據,這樣我可以存儲該列作爲日期時間,雙打和整數。
我設法用下面的代碼來實現這一目標:
> 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
我不知道是否有已經爲這個內置的功能。查看trades
矩陣的每一列,並計算出它是一列整數,雙精度等,並將其轉換爲適當的類型。
這是csv解析器會做的事情。
'?type.convert',這是因爲你猜到了,作爲''read.csv'等read.table'你 – thelatemail
可能會更好過明確設置類型這樣的輔助函數。當計算機猜錯時追蹤錯誤可能是一個痛苦。 –
@HongOoi:我認爲你可能是對的,'type.convert'不喜歡''SIZE'列中的''1e + 05'' ... – user357269