也许这是一个简单的问题,但通常会发生其他语言中的简单事情在R中变得不那么容易。我试过,但我找不到解决方案。任何人都可以帮我这个吗?
我有一个数据框,可能是:
产品价格1
A 2017-01-31 10.000
A 2017-02-28 12.800
A 2017-03-31 15.300
B 2017-01-31 11.000
B 2017-02-28 12.000
B 2017-03-31 12.200
C 2017-01-31 11.000
C 2017-02-28 11.600
C 2017-03-31 12.000
和另一个,可能是这样的:
时间EUR_USD_Rate
2017-01-31 1.200
2017-02-28 1.214
2017-03-31 1.216
我想根据TIME率将每个Price1除以每个EUR_USD_Rate。
我不想合并data.frames。
我想在一个闪亮的应用程序中应用它。我希望它绘制一个离散图,其中Price1除以de EUR / USD Rate。所以我只想打电话给欧元/美元汇率告诉ggplot2将Price1除以EUR / USD。有人能帮帮我吗?提前谢谢!
答案 0 :(得分:0)
你说你不想合并数据框......但是通过在将数据集提供给<div id="header"> this is my header</div>
ggplot
答案 1 :(得分:0)
c1=c('A','A','A','B','B','B','C','C','C');
c2=c('2017-01-31','2017-02-28','2017-03-31','2017-01-31','2017-02-28','2017-03-31','2017-01-31','2017-02-28','2017-03-31');
c3=c(10.000,12.800,15.300,11.000,12.000,12.200,11.000,11.600,12.000);
df1 = data.frame(Prod=c1, Time=c2, Price=c3);df1;
df2 = data.frame(Time=c('2017-01-31', '2017-02-28', '2017-03-31'), EUR_USD_Rate=c(1.200, 1.214, 1.216));df2;
library(sqldf);
dfFinal = sqldf("
select
d1.*
,d2.EUR_USD_Rate
,d1.Price/d2.EUR_USD_Rate as RESULT
from
df1 d1
left join df2 d2
on d1.Time = d2.Time
");
dfFinal;
答案 2 :(得分:0)
你在R中最接近的vlookup将是match
。
要查找特定日期的转化率,您可以
df2$EUR_USD_Rate[match(df1$Time,df2$Time)]
可以解释为:找到我可以在向量df1$Time
中找到df2$Time
的索引,并将其用于df2$EUR_USD_Rate
的子集。
因此您可以使用以下声明调整价格:
df1$Price_adjusted = df1$Price/df2$EUR_USD_Rate[match(df1$Time,df2$Time)]
输出(使用Austin Springer提供的数据):
Prod Time Price Price_adjusted
1 A 2017-01-31 10.0 8.333333
2 A 2017-02-28 12.8 10.543657
3 A 2017-03-31 15.3 12.582237
4 B 2017-01-31 11.0 9.166667
5 B 2017-02-28 12.0 9.884679
6 B 2017-03-31 12.2 10.032895
7 C 2017-01-31 11.0 9.166667
8 C 2017-02-28 11.6 9.555189
9 C 2017-03-31 12.0 9.868421
希望这有帮助!