将两个xts对象彼此相乘

问题描述

我有一个xts列表,看起来像这样(我的列表称为价格):

VALUE_B

我想将价格乘以特定日的流通股。我试图这样做:

head(prices[[1]])

           X        ID      Name            Price              Shares.Outstanding
1980-03-31 "170481" "55160" "Donec Non Ltd" "5,72762874283858" "973,74375"       
1980-04-30 "170482" "55160" "Donec Non Ltd" "7,60702431506945" "973,74375"       
1980-05-30 "170483" "55160" "Donec Non Ltd" "6,97838217177628" "973,74375"       
1980-06-30 "170484" "55160" "Donec Non Ltd" "8,24558297069908" "973,74375"       
1980-07-31 "170485" "55160" "Donec Non Ltd" "7,92929698195742" "973,74375" 

但是,它给了我错误:二进制运算符的非数字参数。 我也尝试使用as.numeric而不是coredata,但这也不起作用。

谢谢!

解决方法

您正试图乘以字符,这就是R抛出错误的原因。

首先,您应该将这些变量更改为数字,并且必须将逗号替换为点:

library(dplyr)

prices[[1]] <- prices[[1]] %>% mutate(Price = as.numeric(sub(",",".",Price,fixed = TRUE)),Shares.Outstanding = as.numeric(sub(",Shares.Outstanding,fixed = TRUE)))
    

然后您可以将它们相乘!