我有以下資料,如下所示。
我想合并,以便將 DF2(列“US”、“CA”)的回報包含在 DF1 中關于日期和國家/地區。我知道如何合并列,但不知道如何與正確的國家/地區匹配。
我將不勝感激您的幫助。
DF1
Company Country Delt.1.arithmetic date
2021-03-01 TSLA CA NA 2021-03-01
2021-03-02 TSLA CA -0.04452764 2021-03-02
2021-03-03 MSFT US -0.04842374 2021-03-03
2021-03-04 TSLA CA -0.04862218 2021-03-04
2021-03-05 MSFT US -0.03779929 2021-03-05
2021-03-08 TSLA CA -0.05844972 2021-03-08
DF2
US CA date
-0.02 -0.02 2021-03-01
-0.02 -0.02 2021-03-02
-0.02 -0.02 2021-03-03
-0.02 -0.02 2021-03-04
-0.02 -0.02 2021-03-05
-0.02 -0.02 2021-03-08
我想要:
Company Country Delt.1.arithmetic date Return
2021-03-01 TSLA CA NA 2021-03-01 0,02
2021-03-02 TSLA CA -0.04452764 2021-03-02 0,02
2021-03-03 MSFT US -0.04842374 2021-03-03 0,01
2021-03-04 TSLA CA -0.04862218 2021-03-04 0,01
2021-03-05 MSFT US -0.03779929 2021-03-05 0,02
2021-03-08 TSLA CA -0.05844972 2021-03-08 0,02
示例資料的代碼:
require(quantmod)
require(zoo)
# STOCK DATA.FRAME
TSLA <- as.data.frame(getSymbols.yahoo("TSLA", from="2021-03-01", verbose=F, auto.assign=F))
AAPL <- as.data.frame(getSymbols.yahoo("AAPL", from="2021-03-01", verbose=F, auto.assign=F))
MSFT <- as.data.frame(getSymbols.yahoo("MSFT", from="2021-03-01", verbose=F, auto.assign=F))
TSLA$Company <- c("TSLA")
AAPL$Company <- c("AAPL")
MSFT$Company <- c("MSFT")
TSLA$Country <- "CA"
AAPL$Country <- "US"
MSFT$Country <- "US"
TSLA$Return <- Delt(TSLA$TSLA.Adjusted)
AAPL$Return <- Delt(AAPL$AAPL.Adjusted)
MSFT$Return <- Delt(MSFT$MSFT.Adjusted)
colnames(TSLA) <- c("Open", "High", "Low", "Close", "Volume", "Adjusted", "Company", "Country", "Return")
colnames(AAPL) <- c("Open", "High", "Low", "Close", "Volume", "Adjusted", "Company","Country", "Return")
colnames(MSFT) <- c("Open", "High", "Low", "Close", "Volume", "Adjusted", "Company","Country", "Return")
stocks <- rbind(TSLA, AAPL, MSFT)
stocks$Open <- NULL
stocks$Close <- NULL
stocks$High <- NULL
stocks$Low <- NULL
stocks$Volume <- NULL
stocks$Adjusted <- NULL
stocks$date <- row.names(stocks)
# Market returns
date <- stocks$date
US <- sample(c(-0.02, -0.02, -0.02, -0.02, 0.15, -0.02, -0.02, -0.02, -0.02), size = nrow(stocks), replace=T)
CA <- sample(c(-0.02, -0.02, -0.02, -0.02, 0.15, -0.02, -0.02, -0.02, -0.02), size = nrow(stocks), replace=T)
market <- data.frame(US,CA,date)
rm(AAPL,MSFT,US,CA,TSLA, date)
uj5u.com熱心網友回復:
library(dplyr)
library(tidyr)
df1 %>%
left_join(df2 %>% pivot_longer(-date, names_to = "Country", values_to = "Return"))
回傳:
Company Country Delt.1.arithmetic date Return 1 TSLA CA NA 2021-03-01 -0.02 2 TSLA CA -0.04452764 2021-03-02 -0.02 3 MSFT US -0.04842374 2021-03-03 -0.02 4 TSLA CA -0.04862218 2021-03-04 -0.02 5 MSFT US -0.03779929 2021-03-05 -0.02 6 TSLA CA -0.05844972 2021-03-08 -0.02
我無法使用您提供的值重現您想要的輸出(我的資料的回傳值都是 -0.02,而您想要的輸出也是 -0.01...)。由于沒有指定連接方向,我假設是左。調整它以適合您的情況。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/326965.html
標籤:r
下一篇:如何在R中制作非數字列的直方圖?
