我正在尝试在dplyr
包中应用自定义函数。
数据与功能
library(tidyquant)
library(dplyr)
Ra <- c("AMZN","FB","GOOG", "NFLX") %>%
tq_get(get = "stock.prices",
from = "2013-01-01",
to = "2016-12-31")
Rb <- "SPY" %>%
tq_get(get = "stock.prices",
from = "2013-01-01",
to = "2016-12-31")
stock_returns_daily <- Ra
benchmark_returns_daily <- Rb
RaRb <- left_join(stock_returns_daily, benchmark_returns_daily, by = c("date" = "date"))
normalise_series <- function(xdat) xdat / coredata(xdat)[1]
(注意:这是有关我之前发表的here帖子的跟进问题,与该问题没有直接关系。)
我正在尝试将以上代码的normalise_series <- function(xdat) xdat / coredata(xdat)[1]
部分应用于dplyr
部分。到目前为止,我所拥有的是
x <- RaRb %>%
group_by(symbol) %>%
select(symbol, adjusted.x) %>%
rowwise() %>%
mutate(adj.x = normalise_series(adjusted.x))
我不确定这为什么行不通。我知道我缺少某些东西,但不知道为什么/为什么。我创建的列仅创建一个1的向量
我正在尝试将该功能(股票价格的归一化功能)应用于dataframe
中的每个组,而不是整个列。 (而正如@Noah所指出的那样,我正在对所有股票应用归一化功能。
任何指向正确方向的指针都很棒!
答案 0 :(得分:1)
使用rowwise()
动词可以使每个命令分别在每一行上执行。这不是您想要的,因为您希望对组中的所有值进行标准化。没有一行。只需把那部分拿出来。
x <- RaRb %>%
group_by(symbol) %>%
select(symbol, adjusted.x) %>%
mutate(adj.x = normalise_series(adjusted.x))