编写一个函数以在 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
对于每种情况,但我想将其缩减为一行。
谢谢。
您可以使用 dplyr
的 mutate
函数追加新列:
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
我想添加一系列带有除法商的列。我的数据框如下所示:
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
对于每种情况,但我想将其缩减为一行。 谢谢。
您可以使用 dplyr
的 mutate
函数追加新列:
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