有没有办法自动将 R 中的列与其名称相乘?

Fab*_*AS7 2 r multiplication dataset

我有一个这样的数据集。

> dataset

ID 一种 C d
1 10 1 30 50
2 5 0 5 60
3 20 1 18 90
4 103 0 20 80
5 16 1 56 100

依此类推,与要求相关的列数最多为“n”。

我在研究领域的同事进行了某些分析,他们给我的输入是一个数据框。其中行名称对应于新数据集的感兴趣变量。

像这样的东西。

> rownames(Features)

一种
d
广告
乙:丁
公元前
a:c

其中冒号 (:) 代表“产品”。因此,为了继续工作,我需要将这些产品包含在原始数据集中。

我手动创建了一个以下列方式重现乘法的函数(其中 x 代表我的原始数据集):

Products<- function(x){x<- x %>% mutate(Product1=x$a*x$d)
                       x<- x %>% mutate(Product2=x$b*x$d)
                       x<- x %>% mutate(Product3=x$b*x$c)
                       x<- x %>% mutate(Product4=x$a*x$c)
                       return(x)}
Run Code Online (Sandbox Code Playgroud)

但是,考虑到要创建的产品数量每次都是可变的,我想找到一种方法来自动创建这些列乘法,并使用它们给我的名称作为输入。我确定我的方法不是最好的,所以非常欢迎任何帮助。

Ony*_*mbu 5

这似乎是在进行一些建模,选择:代表产品是非常有趣的,因为建模世界中经常出现这种情况。在基础 R 中,您可以执行以下操作:

 model.matrix(reformulate(c(-1,rownames(Features))), dataset)

    a b   d  a:d b:d b:c  a:c
1  10 1  50  500  50  30  300
2   5 0  60  300   0   0   25
3  20 1  90 1800  90  18  360
4 103 0  80 8240   0   0 2060
5  16 1 100 1600 100  56  896
Run Code Online (Sandbox Code Playgroud)

我添加-1是为了删除拦截。否则你可以维护它。另请注意,这是一个矩阵,然后您可以将其更改为数据框。