R 基于第二个数据集中的平均值/S.e对第一个数据集的值进行规范化

R 基于第二个数据集中的平均值/S.e对第一个数据集的值进行规范化,r,R,我有两个数据集。第一个数据集包括观测值,第二个数据集包括平均值和s.d.值。我正在寻找一个短程循环函数,根据第二个数据集的平均值和方差值,使第一个数据集中的每行频率标准化正常。我的意思是,我想向第一个数据集添加四列,第一列是基于第二个数据集第一行的平均值/S.e的正常频率值,第二列是基于第二个数据集第二行的平均值/S.e的正常频率值,依此类推 Subject <- seq(1, 13, 1) Frequency <- c(7,79,509,2240,2341,623,476,228,

我有两个数据集。第一个数据集包括观测值,第二个数据集包括平均值和s.d.值。我正在寻找一个短程循环函数,根据第二个数据集的平均值和方差值,使第一个数据集中的每行频率标准化正常。我的意思是,我想向第一个数据集添加四列,第一列是基于第二个数据集第一行的平均值/S.e的正常频率值,第二列是基于第二个数据集第二行的平均值/S.e的正常频率值,依此类推

Subject <- seq(1, 13, 1)
Frequency <- c(7,79,509,2240,2341,623,476,228,168,140,114,64,22)
A<-data.frame(Subject,Frequency)
Mean<-c(11,12,13,14)
S.e<-c(1.1,1.2,1.3,1.4)
B<-data.frame(Mean,S.e)

我认为这就完成了你想要的:

colA<-ncol(A)
for(i in 1:nrow(B)){
  A[,colA+i] <- (A[,2]-B[i,1])/B[i,2]
  names(A)[colA+i] <- paste("Prob",i,sep = "")
}
试试这个:

for (i in 1:nrow(B)) A <- cbind(A,(A[,2]-rep(B[i,1],nrow(A)))/rep(B[i,2],nrow(A)))
names(A) <- c("Subject","Frequency","Norm1","Norm2","Norm3","Norm4")

你好谢谢由于原始数据集中有很多列,如何修改您的代码以将列名更改为Prob1、Prob2、Prob3、Prob4?我已对应该更改名称的代码进行了编辑。如果你喜欢,你能接受我的回答吗?