编写一个函数以在 R 中添加具有除法商的多列

write a function to add multiple columns with quotient of a division in R

我想添加一系列带有除法商的列。我的数据框如下所示:

views01  users01 views02 users02 
   2        4       4       1             
   4        5       11      2              
   5        2       9       4              

我想编写一段代码来计算分区视图 (n)/用户 (n) 并将列添加到 df,如下所示:

 views01  users01 views02 users02  views_per_user01  views_per_user02
   2        4       4       1            0.5                4 
   4        5       11      2            0.8               5.5
   5        2       9       4            2.5               2.25

暂时,我创建了这样一行代码:

df$views_per_user01=df$views01/df$users01
df$views_per_user02=df$views02/df$users02

对于每种情况,但我想将其缩减为一行。 谢谢。

您可以使用 dplyrmutate 函数追加新列:

library(dplyr) 
mutate(df, views_per_user01=views01/users01,                
           views_per_user02=views02/users02)

假设您的数据框将按照您的示例进行排序的一种方法,

cbind(df, sapply(unique(sub('\D+', '', names(df))), 
                       function(i) Reduce('/', df[,grepl(i, sub('\D+', '', names(df)))])))

#  views01 users01 views02 users02  01   02
#1       2       4       4       1 0.5 4.00
#2       4       5      11       2 0.8 5.50
#3       5       2       9       4 2.5 2.25