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