R 基于列名的条件相乘
我已经检查过了,但它不符合我的数据结构 输入 我有一个数据框R 基于列名的条件相乘,r,dataframe,multiplication,calculated-columns,R,Dataframe,Multiplication,Calculated Columns,我已经检查过了,但它不符合我的数据结构 输入 我有一个数据框投资组合,其中包含公司识别器识别器、投资组合权重权重、日期,并且在其余列中至少返回每个识别器的数据: # Portfolio Indentifier Weight Date AIR.PA SCHN.PA ASML.AS TCH.PA ERICb.ST SASY.PA RE.PA TELIA.ST NOKIA.HE DAIGn.DE ALSO.PA ... 1
投资组合
,其中包含公司识别器识别器
、投资组合权重权重
、日期
,并且在其余列中至少返回每个识别器
的数据:
# Portfolio
Indentifier Weight Date AIR.PA SCHN.PA ASML.AS TCH.PA ERICb.ST SASY.PA RE.PA TELIA.ST NOKIA.HE DAIGn.DE ALSO.PA ...
1 AIR.PA 0.007671609 2003-04-30 0.2164 -0.0112 0.3008 0.2772 0.4247 0.1592 0.2780 0.2138 0.1975 0.1351 0.2908
2 SCHN.PA 0.004302912 2003-05-30 0.1420 -0.0482 0.0904 0.1135 0.0729 0.0168 0.0210 0.0640 0.0092 -0.0744 0.8791
3 SCHN.PA 0.004302912 2003-06-30 0.1317 0.0533 -0.0201 -0.0588 0.0683 -0.0402 0.2177 0.0782 -0.0627 0.1364 -0.1228
4 AIR.PA 0.007671609 2003-06-30 0.3311 0.1661 0.4075 0.0424 0.3646 -0.0176 0.0738 0.0155 -0.0502 0.0556 0.0333
5 AIR.PA 0.007671609 2003-07-31 0.0188 0.0302 0.2328 0.1836 0.0923 0.0220 0.1104 -0.0257 0.0954 0.0810 -0.2774
...
我想将日期的标识符
s'权重
与存储在列中的返回值相乘,列名称与标识符
相同
示例
对于带有标识器的行1
,带有日期2003-04-30
,计算应为:重量0.007671609
*
返回数据0.2164
=0.001660
理想情况下,AIR.PA
、SCHN.PA
和ASML.AS
的Portfolio
输出如下:
# Portfolio
Date AIR.PA SCHN.PA ASML.AS ...
1 2003-04-30 0.001660 NA NA
2 2003-05-30 NA -0.000207 NA
3 2003-06-30 0.002540 0.000229 NA
4 2003-07-31 0.000144 NA NA
...
提前感谢您的帮助!向你问好,托马斯。应该直截了当地说:
dat%>%
pivot_更长(cols=-c(标识符、重量、日期))%>%
变异(分数=权重*值)%>%
筛选器(标识符==名称)%>%
pivot\u更宽(名称\u from=name,值\u from=score)%>%
选择(-c(标识符、重量、值))
应用于您的数据:
日期%变异(日期=截止日期(日期))
dat%>%
pivot_更长(cols=-c(标识符、重量、日期))%>%
变异(分数=权重*值)%>%
筛选器(标识符==名称)%>%
pivot\u更宽(名称\u from=name,值\u from=score)%>%
选择(-c(标识符、重量、值))
产生:
# A tibble: 5 x 3
Date AIR.PA SCHN.PA
* <date> <dbl> <dbl>
1 2003-04-30 0.00166 NA
2 2003-05-30 NA -0.000207
3 2003-06-30 NA 0.000229
4 2003-06-30 0.00254 NA
5 2003-07-31 0.000144 NA
#一个tibble:5x3
日期AIR.PA SCHN.PA
*
1 2003-04-30 0.00166北美
2 2003-05-30 NA-0.000207
3 2003-06-30 NA 0.000229
4 2003-06-30 0.00254 NA
5 2003-07-31 0.000144 NA
谢谢您的帮助!我将更加熟悉pivot\u longer()
和pivot\u wide()
.Np!你会习惯的,但这需要时间。