For循环中的For循环?
我有两个数据帧:For循环中的For循环?,r,loops,for-loop,dataframe,for-in-loop,R,Loops,For Loop,Dataframe,For In Loop,我有两个数据帧: df1<- as.data.frame(matrix(1:15, ncol=5)) df2<- as.data.frame(matrix(30:44,ncol=5)) df1包含所有X值,df2数据帧的每一行包含用于计算平均值和sd的值。 我生成一个循环,为df1第一列中的每个值计算z分数。但现在我的问题是:如何计算整个数据帧的z分数 test <- list() for (i in 1:nrow(df1) { zscore<- (df1[i,1]
df1<- as.data.frame(matrix(1:15, ncol=5))
df2<- as.data.frame(matrix(30:44,ncol=5))
df1包含所有X值,df2数据帧的每一行包含用于计算平均值和sd的值。
我生成一个循环,为df1第一列中的每个值计算z分数。但现在我的问题是:如何计算整个数据帧的z分数
test <- list()
for (i in 1:nrow(df1) {
zscore<- (df1[i,1] - (apply(df2[i,],1,mean))) / (apply(df2[i,],1,sd))
test[[i]] <- matrix(zscore)
i <- 1+1
}
谢谢大家! [我认为这里的行/列倒过来了。z分数通常应用于变量,R希望这些变量在列中。我在下面写的内容遵循通常的惯例。如果确实想按行进行标准化,请相应更改。] 清扫是你的普通朋友。我们计算平均值和标准偏差,然后将其从数据帧df1中扫减: 我们可以通过以矢量化方式对df3的第一列进行计算来检查这一点:
R> (df1[,1] - mean(df2[,1])) / sd(df2[,1])
[1] -30 -29 -28
对于这种特殊情况,还可以使用比例功能,并提供自己的中心和比例、各自的平均值和标准偏差
R> scale(df1, center = mns, scale = sds)
V1 V2 V3 V4 V5
[1,] -30 -30 -30 -30 -30
[2,] -29 -29 -29 -29 -29
[3,] -28 -28 -28 -28 -28
attr(,"scaled:center")
V1 V2 V3 V4 V5
31 34 37 40 43
attr(,"scaled:scale")
V1 V2 V3 V4 V5
1 1 1 1 1
[我认为这里的行/列是倒过来的。z分数通常应用于变量,R应该在列中。我在下面写的内容遵循通常的惯例。如果确实想按行进行标准化,请相应更改。] 清扫是你的普通朋友。我们计算平均值和标准偏差,然后将其从数据帧df1中扫减: 我们可以通过以矢量化方式对df3的第一列进行计算来检查这一点:
R> (df1[,1] - mean(df2[,1])) / sd(df2[,1])
[1] -30 -29 -28
对于这种特殊情况,还可以使用比例功能,并提供自己的中心和比例、各自的平均值和标准偏差
R> scale(df1, center = mns, scale = sds)
V1 V2 V3 V4 V5
[1,] -30 -30 -30 -30 -30
[2,] -29 -29 -29 -29 -29
[3,] -28 -28 -28 -28 -28
attr(,"scaled:center")
V1 V2 V3 V4 V5
31 34 37 40 43
attr(,"scaled:scale")
V1 V2 V3 V4 V5
1 1 1 1 1
R> scale(df1, center = mns, scale = sds)
V1 V2 V3 V4 V5
[1,] -30 -30 -30 -30 -30
[2,] -29 -29 -29 -29 -29
[3,] -28 -28 -28 -28 -28
attr(,"scaled:center")
V1 V2 V3 V4 V5
31 34 37 40 43
attr(,"scaled:scale")
V1 V2 V3 V4 V5
1 1 1 1 1