R用于循环,带有用于z分数计算的面板数据
我目前正在RStudio中创建一些函数,其中包含一个数据集,该数据集包含2005-2013年间观察到的大约100000个个体。我有一个不平衡的面板,有两个感兴趣的变量——为了简单起见,我们把它们称为x和y 我指定的函数采用以下形式: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。换句话说,在某些情况
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)