我想在数据框 tmp 中添加一个名为 norm 的新列(其中包含值的标准)。如果列variable==1
计算value
的范数,其中变量== 1 。如果列variable==2
计算value
的范数,其中变量== 2 。
以下是数据框:
coef variable value
1 1 1 0.9591502
2 2 1 5.3128176
3 3 1 12.4926498
4 4 1 17.7088466
5 5 1 4.7635561
6 1 2 7.8381375
7 2 2 6.0122541
8 3 2 9.2607897
9 4 2 6.7421873
10 5 2 4.2404777
到目前为止,这是代码:
#generating some values
set.seed(19875)
n=10
p=30
real_p=15
x=matrix(rnorm(n*p), nrow=n, ncol=p)
y=as.matrix(apply(x[, 1:real_p], 1, sum) + rnorm(n))
beta=as.matrix(rep(0,ncol(x)))
n_iter=2
value1=matrix(0,30,n_iter)
value2=matrix(0,30,n_iter)
#the important part
for(k in 1:n_iter){
beta=matrix(rexp(beta, rate=.1), nrow = ncol(x)) #generating beta values
value1[,k]=beta #storing beta to a matrix 30x1
value2[,k]=norm(beta) #storing norm as a matrix 30x1
tmp <- as.data.frame(as.matrix(value1))
tmp$coef <- row.names(tmp) #adding column coef
tmp <- reshape::melt(tmp, id = "coef") #adding col variable and value
tmp$variable <- as.numeric(gsub("V", "", tmp$variable))#removing V
}
tmp
如果我添加一个名为 norm 的新列,其功能为融化,tmp$norm=melt(value2, id="variable")
我会得到一些 norm.X1 和< strong> norm.X2 我不需要的列。
coef variable value norm.X1 norm.X2 norm.value
1 1 1 0.9591502 1 1 331.9455
2 2 1 5.3128176 2 1 331.9455
3 3 1 12.4926498 3 1 331.9455
4 4 1 17.7088466 4 1 331.9455
5 5 1 4.7635561 5 1 331.9455
如何在未添加新列的情况下添加规范?