Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 基于列名的条件相乘_R_Dataframe_Multiplication_Calculated Columns - Fatal编程技术网

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!你会习惯的,但这需要时间。