Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R用于循环,带有用于z分数计算的面板数据_R_Normalization - Fatal编程技术网

R用于循环,带有用于z分数计算的面板数据

R用于循环,带有用于z分数计算的面板数据,r,normalization,R,Normalization,我目前正在RStudio中创建一些函数,其中包含一个数据集,该数据集包含2005-2013年间观察到的大约100000个个体。我有一个不平衡的面板,有两个感兴趣的变量——为了简单起见,我们把它们称为x和y 我指定的函数采用以下形式: z = (mean(x) + mean(y)) / sd(x) 值得注意的是,它是一种正常的z分数度量,通常在模型估计的预处理阶段用作归一化技术 指定函数的目的是计算数据集中每个个体i的z,同时考虑到不同个体观察到的不同周期T=1,2…,T。换句话说,在某些情况

我目前正在RStudio中创建一些函数,其中包含一个数据集,该数据集包含2005-2013年间观察到的大约100000个个体。我有一个不平衡的面板,有两个感兴趣的变量——为了简单起见,我们把它们称为x和y

我指定的函数采用以下形式:

z = (mean(x) + mean(y)) / sd(x) 
值得注意的是,它是一种正常的z分数度量,通常在模型估计的预处理阶段用作归一化技术

指定函数的目的是计算数据集中每个个体i的z,同时考虑到不同个体观察到的不同周期T=1,2…,T。换句话说,在某些情况下,我有2008-2013年的数据,而在其他情况下,我有2006-2010年的数据

目前,我已将我的职能规定如下:

z1 <- function(x,y) {
(mean(x) + mean(y))/sd(x)
}
我只得到一个数字作为输出,表示从总观察数(约150000行)计算得出的结果。我应该如何编辑代码以确保数据集中的每个人都有一个数字


我假设我必须使用一个for循环来迭代和计算一个人的z分数,但我不确定在编写函数时如何指定它。

它返回一个值,因为平均值(x)、平均值(y)和sd(x)都是数值,您不要求它做任何其他事情

下面的代码模拟两个(向量)并执行(我认为是)您想要的操作。如果你对你的任务有更多的描述,那会有帮助

x <- rbinom(100,3,(2/5))
y <- rpois(100,2.5)


f <- function(mvL,mvR){
    answer = NULL;
    vector <- readline('Which?: ')
    if (vector=='Left'){
         for  (i in 1:length(mvL)){
             answer[i] = mvL[i] - ((mean(mvL) + mean(mvR)) / sd(mvL));
         }
    }
    else{
      for (i in 1:length(mvR)){
        answer[i] = mvR[i] - ((mean(mvL) + mean(mvR)) / sd(mvL));
      }
    }
    return (answer);
}

f(x,y)

非常感谢诺德尔,这是朝着正确方向迈出的一步。我所拥有的是大约100000人的样本。数据矩阵大约有150000行,3列。其中一列是每个单独的标识符,另外两列是变量x和y。我想计算整个样本中每个人的z分数。但是,我不知道如何确保函数计算每个个体的平均值和标准偏差,然后在进入下一个之前计算该个体的z分数。
x <- rbinom(100,3,(2/5))
y <- rpois(100,2.5)


f <- function(mvL,mvR){
    answer = NULL;
    vector <- readline('Which?: ')
    if (vector=='Left'){
         for  (i in 1:length(mvL)){
             answer[i] = mvL[i] - ((mean(mvL) + mean(mvR)) / sd(mvL));
         }
    }
    else{
      for (i in 1:length(mvR)){
        answer[i] = mvR[i] - ((mean(mvL) + mean(mvR)) / sd(mvL));
      }
    }
    return (answer);
}

f(x,y)