【问题标题】:Normalizing the values of first data set based on the value of mean/S.e in the second data set根据第二个数据集中的均值/S.e 值对第一个数据集的值进行归一化
【发布时间】:2017-03-24 10:47:42
【问题描述】:

我有两个数据集。第一个数据集包括观察值,第二个数据集包括平均值和 s.d。我正在寻找一种简短的方法(循环函数)来根据第二个数据集的均值和方差值对第一个数据集中的每一行频率进行标准化 标准正态。我的意思是,我想向第一个数据集添加四列,第一列将是基于第二个数据集第一行的 Mean/S.e 的频率的正常值,第二列是频率的正常值基于来自第二个数据集的第二行的 Mean/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)

【问题讨论】:

    标签: r


    【解决方案1】:

    我认为这可以满足您的要求:

    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 = "")
    }
    

    【讨论】:

    • 嗨。谢谢。由于我在原始数据集中有很多列,我如何修改您的代码以将列名更改为 Prob1、Prob2、Prob3、Prob4?
    • 我对应该更改名称的代码进行了编辑。喜欢的话可以采纳我的回答吗?
    【解决方案2】:

    试试这个:

    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")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-27
      • 1970-01-01
      • 1970-01-01
      • 2022-11-01
      • 2016-12-16
      • 1970-01-01
      • 2017-02-28
      相关资源
      最近更新 更多