首先,我是第一次发布海报,所以请耐心等待。我在这里和其他地方寻找过答案,但还没有找到我正在寻找的东西。我对SAS(和编程)很陌生,所以很有可能我找错了。
总之。我从事研究工作,目前担任关于工作和健康的大型纵向调查问卷的数据管理员,这项研究是为同一参与者收集的,用于五波数据收集。我们希望促进数据的传播和数据集的使用,因此我们希望根据当前数据创建教学数据集。教学数据集目前包括2000个随机选择的个体和463个变量 - 这只是量表的一个子集和主集的一些背景信息。
我的问题是,在我们开始传播集合之前必须满足的标准之一是,每个人都必须保持匿名 - 因此我们必须在数据集中包含随机错误。我已经将许多背景变量,收入,年龄,教育等分组。但我希望每个变量至少包含一些随机错误。我无法弄明白必须这样做。大多数变量看起来像这样:
while($rowcount = mysql_fetch_array($result)) {
$et = $rowcount['EndTime']; $st = $rowcount['StartTime'];
$sum = $et < $st ?
$et + (24 - $st)
:
$et - $st;
$count += $sum;
}
大多数变量的值可以在1到5之间(并且缺失)。我一直在考虑更换值(即,每1 = 2,每2 = 3等),但它会使最终结果变坏,因为许多分析将变得奇怪。对于每个变量,我想将2000个观测值中的50个随机改变为变量可以采用的任何整数(1到5或缺失)。
有什么建议吗?我想我可以将变量y的每个第n次观察变为x - 但这不是随机的。我想改变所有变量,而不是为每个变量编写代码。
答案 0 :(得分:1)
我会使用数据步骤并随机选择观察值进行更改。
data want;
set have;
/*Random uniform - change seed as you see fit*/
_rand= ranuni(1);
/*Select approximately 50/2000 = 2.5% records*/
if _rand > 50/2000 then do;
/*Set variable to integer 0-5*/
var1 = floor(6*ranuni(1));
/*if set to 0, then set missing*/
if var1 = 0 then
var1=.;
/*Do this however many times you need*/
end;
/*do not put the _rand value into the output data*/
drop _rand;
run;
答案 1 :(得分:0)
我不熟悉SAS,但我会建议一些应该通用的原则
移动时,再次对随机数进行采样,然后乘以6,然后向下舍入...如果6该字段应为空...
预先计算的数字在这种情况下是2000/50 ..