Re: [問題] 用兩個data frame的index來join ?
※ 引述《Su22 (裝配匠)》之銘言:
: [問題類型]:
:
: 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
:
: [軟體熟悉度]:
: 請把以下不需要的部份刪除
: 入門(寫過其他程式,只是對語法不熟悉)
: [問題敘述]:
: 請簡略描述你所要做的事情,或是這個程式的目的
: 假設我撈了0050的股票資料存到data frame
: 這樣data frame最前面是日期(但不是data frame的欄位)
: 但該日期欄並不是data frame的欄位
: 如果我又撈了0056的股票資料存到另一個data frame
: data frame最前面也是日期(但不是data frame的欄位)
: 那要如何用日期來join兩個data frame ?
: [程式範例]:
:
: #install.packages("quantmod")
: library(quantmod)
: STK0050=get(getSymbols("0050.tw"))
: View(STK0050)
: STK0050DF=data.frame(STK0050)
: str(STK0050DF)#查出來日期並非data frame的欄位
: STK0056=get(getSymbols("0056.tw"))
: View(STK0056)
: STK0056DF=data.frame(STK0056)
: str(STK0056DF)#查出來日期並非data frame的欄位
: #若我要用index:日期來join STK0050與STK0056
: 該怎麼做?
:
善用R的資料ETL工具就可以做到很方便的資料整理
EX:
library(quantmod)
library(data.table)
library(pipeR)
library(stringr)
stocks <- c("0050.tw", "0056.tw", "0061.tw")
lapply(stocks, function(s){
melt(data.table(get(getSymbols(s)), keep.rownames = TRUE), 1,
value.name = "price") %>>%
`[`(j = `:=`(c("stock", "cate"),
data.table(str_match(variable, "(\\d{4}.TW)\\.(.*)")[,2:3]))) %>>%
`[`(j = variable := NULL)
}) %>>% rbindlist %>>% dcast(index + stock ~ cate, value.var = "price")
# index stock Adjusted Close High Low Open Volume
# 1: 2007-12-31 0050.TW 52.20 61.45 61.70 61.05 61.45 2870000
# 2: 2007-12-31 0056.TW 19.89 26.04 26.05 25.70 26.04 3440000
# 3: 2008-01-02 0050.TW 51.05 60.10 61.30 60.00 60.10 4975000
# 4: 2008-01-02 0056.TW 19.66 25.75 26.15 25.70 25.75 3806000
# 5: 2008-01-03 0050.TW 50.20 59.10 59.35 58.60 59.10 7413000
# ---
# 6201: 2017-03-20 0056.TW 24.92 24.92 24.95 24.81 24.81 2447000
# 6202: 2017-03-20 0061.TW 15.65 15.65 15.71 15.64 15.71 2313000
# 6203: 2017-03-21 0050.TW 74.90 74.90 74.90 74.30 74.30 8501000
# 6204: 2017-03-21 0056.TW 25.03 25.03 25.15 24.95 24.95 8274000
# 6205: 2017-03-21 0061.TW 15.66 15.66 15.68 15.63 15.65 1231000
這樣不論輸入幾個stocks都可以很漂亮地把資料整理出來
FYI
--
R資料整理套件系列文:
magrittr #1LhSWhpH (R_Language) https://goo.gl/72l1m9
data.table #1LhW7Tvj (R_Language) https://goo.gl/PZa6Ue
dplyr(上.下) #1LhpJCfB,#1Lhw8b-s (R_Language) https://goo.gl/I5xX9b
tidyr #1Liqls1R (R_Language) https://goo.gl/i7yzAz
pipeR #1NXESRm5 (R_Language) https://goo.gl/zRUISx
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.235.90.162
※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1490191254.A.EA7.html
※ 編輯: celestialgod (36.235.90.162), 03/22/2017 22:06:11
推
03/25 23:37, , 1F
03/25 23:37, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
R_Language 近期熱門文章
PTT數位生活區 即時熱門文章