全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1152 2
2021-06-10
我有一组数据大概长成这样:

Id time outcome
1 1 0
1 2 0
1 3 0
1 4 1
1 5 0
2 1 0
2 2 0
2 3 1
3 2 1
3 4 0
...
10 1 0
10 3 0
10 4 1
同id会随时间进行最多5次记录,然而现在的问题是有的ID的缺了前几次的数据记录,有的缺了后几次的,还有的缺了中间的。我现在想把缺失的数据补全,例如ID为2的缺了第4和第5次记录,则给他加上两行代表第4和第5次记录的新数据(outcome显示为NA即可)。换言之我想要的结果如下:
Id time outcome
1 1 0
1 2 0
1 3 0
1 4 1
1 5 0
2 1 0
2 2 0
2 3 1
2 4 NA
2 5 NA
3 1 NA
3 2 1
3 3 NA
3 4 0
3 5 NA
...
尝试了proc expand等很多种办法都没有用,求热心人士解答!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2021-6-10 18:44:46
可以用sql 的distinct求出id个数,然后用两层循环,得到含所有的id和每个id 5个time的全数据。然后用这个数据和你的数据进行匹配合并,这样就可以将你的数据里time缺失的或者id缺失的补全了。然后对缺失值进行赋值NA。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2021-6-11 22:14:26
建议您了解一下笛卡尔积,以下示例程序可以解决您的问题。
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群