乘数增加

时间:2018-07-08 17:56:35

标签: r loops dataframe multiplication scalar

我有一个数据框(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)有很多行,是否有一种更快的方法?

4 个答案:

答案 0 :(得分:0)

使用

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

答案 1 :(得分:0)

下面是一个可能的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
  )

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)