创建新变量,它是许多其他变量的线性组合
Create new variable that is linear combination of many other variables
假设我有一个如下所示的数据框:
df1 <- as.data.frame(matrix( rnorm(100*50,mean=0,sd=1), 100, 50))
我想创建一个新变量 y
,它是总和 alpha_i*V_i,其中 i 从 1 到 50,其中 alpha 是从均匀分布中抽取的随机数(0,1).
最好的方法是什么?我可以用 mutate
和 dplyr
来做吗?
你可以试试
df1$newvar <- as.matrix(df1) %*% v1
或者
df1$newvar <- rowSums(sweep(df1, 2, v1, FUN='*'))
或@Frank 根据 post
建议
df1$newvar <- Reduce(`+`,lapply(seq_along(v1),function(i)df1[[i]]*v1[i]))
数据
set.seed(24)
df1 <- as.data.frame(matrix( rnorm(100*50,mean=0,sd=1), 100, 50))
set.seed(48)
v1 <- runif(50)
假设我有一个如下所示的数据框:
df1 <- as.data.frame(matrix( rnorm(100*50,mean=0,sd=1), 100, 50))
我想创建一个新变量 y
,它是总和 alpha_i*V_i,其中 i 从 1 到 50,其中 alpha 是从均匀分布中抽取的随机数(0,1).
最好的方法是什么?我可以用 mutate
和 dplyr
来做吗?
你可以试试
df1$newvar <- as.matrix(df1) %*% v1
或者
df1$newvar <- rowSums(sweep(df1, 2, v1, FUN='*'))
或@Frank 根据 post
df1$newvar <- Reduce(`+`,lapply(seq_along(v1),function(i)df1[[i]]*v1[i]))
数据
set.seed(24)
df1 <- as.data.frame(matrix( rnorm(100*50,mean=0,sd=1), 100, 50))
set.seed(48)
v1 <- runif(50)