我正在尝试重新创建一个我在R中的SAS中的过程,在那里我创建一个数据集,其中包含某个变量的不同值以对该变量进行评分。在这种情况下,我希望重复我的数据集中的每个观察,处理序数从0变为4,因此每个观察将变成5个观察。
SAS代码:
data want;
set have;
do treatmentordinal=0 to 4;
output;
end;
run;
这将基本上为数据集中的每个观察创建5个观察值,其中治疗序数将从0到4。我一直在寻找如何做到这一点,找不到任何东西。
要清楚,我已经拥有一个10k左右的数据集。只想让每一行都有各种治疗价值。
实施例 有:
treatment=c(2)
ID=c(1)
df_have=data.frame(treatment,ID)
想:
treatment2=c(0,1,2,3,4)
ID=c(1)
df_want=data.frame(treatment2,ID)
答案 0 :(得分:0)
我认为你要找的是expand.grid
treatment2=c(0,1,2,3,4)
ID=c(1:2)
expand.grid(TR=treatment2,ID=ID)
TR ID
1 0 1
2 1 1
3 2 1
4 3 1
5 4 1
6 0 2
7 1 2
8 2 2
9 3 2
10 4 2
在您的主要数据上,您可能会执行以下操作:
expand.grid(TR=unique(data$treatment), ID=unique(data$ID))