我有以下示例数据
BR WT SW PO
1 4.0 7 2.0 1.0
2 12.0 5 4.0 2.0
3 8.0 7 5.0 8.6
4 9.0 3 5.6 9.0
5 1.0 10 6.0 5.0
6 6.0 2 7.5 12.0
7 7.0 3 10.0 15.0
8 4.5 10 12.0 6.0
我要做的是首先浏览每一列数据,并在每一列中:
(a) 相对于整列对每个值进行排名,以及
(b) 计算列中的观察总数。
然后,对于每一列,我尝试做一个数学表达式,即“rank/(count+1)”,并将该结果分配给一个变量。到目前为止,这是此示例数据框(“df”)的代码。
for (i in 1:ncol(df)) {
assign(paste("x",i,sep=""),rank(-df[,i],ties.method="first"))
assign(paste("y",i,sep=""),length(df[,i]))
assign(paste("z",i,sep=""),(x[i]/(y[i]+1)))
}
当我对每个“分配”行进行故障排除时,“x”和“y”变量工作正常:
> x1
[1] 7 1 3 2 8 5 4 6
> x2
[1] 3 5 4 6 1 8 7 2
> x3
[1] 8 7 6 5 4 3 2 1
> x4
[1] 8 7 4 3 6 2 1 5
y1:4(在这种情况下)工作正常,结果都是 8。但是,x[i]/(y[i]+1) 的运算会导致以下错误:
Error in assign(paste("z", i, sep = ""), (x[i]/(y[i] + 1))) :
object 'y' not found
有人有想法么?一旦我计算出这个新的“z[i]”值,我如何使用这些 z 值创建一个新的数据框,以便我可以继续使用 ggplot?