r - 有没有办法根据名称自动执行 R 中列的乘法?

我有这样的数据集。

> dataset

id 一个 b 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)

日> 一个 b d 一:d b:d b:c 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)}

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

最佳答案

这似乎是在进行一些建模,选择 : 来代表产品非常有趣,因为这在建模世界中很常见。在 base 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

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

https://stackoverflow.com/questions/65400958/

相关文章:

amazon-web-services - Amazon RDS 和 VPC 端点连接

c# - Windows 窗体在没有文本框的情况下添加文本

r - as.integer(8952) = 8951?

r - 如何使用 dplyr 在 R 中转置数据帧?

windows - 使 HTML 不适用于 Windows 10 中的 Sphinx 文档

python - 从多列的 value_counts 中排除项目

javascript - 如何在 Nestjs 中扩展多个 dto 类

python - , 运算符用在条件语句的右侧时有何作用?

javascript - 轻松设置 react redux with next.js (React)

python - 从 python 列表创建子列表