我目前正致力于在RStudio中创建一些功能,其中包含从2005年到2013年观察到的大约100,000个人的数据集。我有一个不平衡的面板,有两个感兴趣的变量 - 为了简单起见,我们称它们为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)
}
当我执行它时:
z1(x,y)
我只得到一个数字作为输出,表示从观察总数(约150,000行)计算。我该如何编辑代码以确保为数据集中的每个人获取一个数字?
我假设我必须使用for循环来迭代并计算当时一个人的z分数,但我不确定如何在编写我的函数时指定它。
答案 0 :(得分:0)
它返回单个值,因为均值(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)