增加乘数

Increasing Multiplier

我有一个数据框 (df),其中包含如下所示的两个变量:

   pricePerBusiness num_businesses
1           4228.966         3755
2           4966.552         3243
3           4678.073         3109
4           4752.259         2990
5           4545.194         2949 

我想制作一个新的数据框,它是此数据框和标量(本例中为 15)的乘积,每行的值 (1,2,3,...) 都会增加,例如:

df2[1,] <- 1*df[1,]$pricePerBusiness + 0.15*df[1,]$num_businesses - 15*1
df2[2,] <- 1*df[2,]$pricePerBusiness + 0.15*df[2,]$num_businesses - 15*2
df2[3,] <- 1*df[3,]$pricePerBusiness + 0.15*df[3,]$num_businesses - 15*3

等等。但是我的数据框 (df) 有很多行,有没有更快的方法来做到这一点?

修改你的标量
as.numeric(rownames(df))*0.15

下面是一个可能的 dplyr 解决方案。请确保您的问题是可重现的。

# importing dplyr
library(dplyr)

# reproducing your original data frame
df <- data_frame(
  pricePerBusiness = c(4228.966, 4966.552, 4678.073, 4752.259, 4545.194),
  num_businesses = c(3755, 3243, 3109, 2990, 2949)
)

# creating the final data frame you want
df2 <- df %>%
  mutate(
    # constructing the term to substract
    penalty = 15 * 1:nrow(df),
    # computing the value needed
    value = pricePerBusiness + (0.15 * num_businesses) - penalty
  )

此外,在基础中使用 with():

with(df,
  df2 <<- data.frame(result = pricePerBusiness + 0.15 * num_businesses - 15 *
                              (1:length(num_businesses)))
)

我对 df 了解不多,但我搜索并找到了这个链接,希望它能对你有所帮助