我想通过使用数据帧中的变量值来创建矢量

时间:2017-08-18 13:21:43

标签: r

data <- data.frame(cust_id=1:5, 
                   a=c(10,20,30,40,50), 
                   b=c(5,10,15,20,25), 
                   c=c(20,40,60,80,100),
                   d=c(2,4,6,8,10))

vect <- c(a*2,b*3,c*4,d*5)

这里我需要从每个cust_id(1:5)的数据集中获取a,b,c,d的值作为向量,然后将它们乘以2,3,4,5这是常量< / em>的

vect <- c(40*2,20*3,80*4,8*5)
  

*注意:vect是一个向量,我需要以向量形式输出。

     

a,b,c,d是来自每个cust_id

的数据的变量值

2 个答案:

答案 0 :(得分:0)

我们可以使用crossprod(如果我们需要乘以然后sum

crossprod(t(data[-1]), 2:5)

如果只需要将相应的列乘以vector

sweep(data[-1], 2, 2:5, "*")

mapply

mapply(`*`, data[-1], 2:5)

答案 1 :(得分:0)

您想将矩阵的矢量化点积乘以矢量

as.matrix(data[,c('a','b','c','d')]) %*% c(2,3,4,5)

     [,1]
[1,]  125
[2,]  250
[3,]  375
[4,]  500

并且由于您还希望传播cust_id列,因此最简单的方法是将输入数据框的cust_id列切开,然后将其单独绑定回结果:

df.out <- data.frame(cust_id = data[,'cust_id'],
                     result = as.matrix(data[,c('a','b','c','d')]) %*% c(2,3,4,5))

  cust_id result
1       1    125
2       2    250
3       3    375
4       4    500
5       5    625