首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中同位置值的乘积

R中同位置值的乘积
EN

Stack Overflow用户
提问于 2014-11-06 17:10:07
回答 2查看 624关注 0票数 0

我在R工作,我有两个数据集。一个数据集包含一个贡献金额,另一个数据集包含一个包含/排除标志。以下是数据:

代码语言:javascript
复制
> contr_df
     asof_dt    X          Y
1 2014-11-03   0.3         1.2
2 2014-11-04  -0.5         2.3
3 2014-11-05   1.2         0.4
> inex_flag
      asof_dt  X    Y
1 2014-11-03   1   0
2 2014-11-04   1   1
3 2014-11-05   0   0

我想创建第三个数据集,显示一个乘以另一个。例如,我希望看到以下内容

代码语言:javascript
复制
2014-11-03 0.3 * 1       1.2*0
2014-11-04 -0.5*1         2.3*1
2014-11-05 1.2*0         0.4*0

到目前为止,我能够做到这一点的唯一方法是使用一个for循环,它循环遍历列的总数。然而,这是复杂和低效的。我想知道是否有更容易的方法来实现这一目标。有谁知道更好的解决办法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-06 17:16:27

这做了乘法,但对各种因素来说没有意义:

代码语言:javascript
复制
df1 * df2
#  asof_dt    X   Y
#1      NA  0.3 0.0
#2      NA -0.5 2.3
#3      NA  0.0 0.0
#Warning message:
#In Ops.factor(left, right) : * nicht sinnvoll für Faktoren

一种选择:您可以绑定第一列和如下所示的乘积值:

代码语言:javascript
复制
cbind(df1[1], df1[-1] * df2[-1])
#     asof_dt    X   Y
#1 2014-11-03  0.3 0.0
#2 2014-11-04 -0.5 2.3
#3 2014-11-05  0.0 0.0

这意味着,在没有每个数据帧的第一列的情况下,将df1和df2相乘,并在其中添加带有日期的df1的第一列。

票数 3
EN

Stack Overflow用户

发布于 2014-11-06 17:16:58

一号线的回答是:

代码语言:javascript
复制
mapply(`*`, contr_df, inex_flag)

这将对跨data.frame列应用标量乘法函数。

代码语言:javascript
复制
d = data.frame(a=c(1,2,3), b=c(0,2,-1))
e = data.frame(a=c(.2, 2, -1), b=c(0, 2, -2))
mapply(`*`, d, e)
      a b
[1,]  0.2 0
[2,]  4.0 4
[3,] -3.0 2
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26785299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档