我有这样的数据集。
> dataset
依此类推,直到与要求相关的“n”列。
我在研究领域的同事进行了某些分析,他们给我的输入是一个数据框。其中行名称对应于新数据集的感兴趣变量。
像这样。
> rownames(Features)
其中冒号 (:) 代表“产品”。因此,为了继续工作,我需要将这些产品包含在原始数据集中。
我手动创建了一个函数,以下列方式重现乘法(其中 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/