loops - 在 SAS 中缺少值时将先前的值向前推进
问题描述
我有以下数据集:
Player Average1 Average2 Average3
001 .283 . .302
002 .256 . .
003 .314 . .297
004 .282 .274 .
我希望数据集如下所示:
Player Average1 Average2 Average3
001 .283 .283 .302
002 .256 .256 .256
003 .314 .314 .297
004 .282 .274 .274
该表扩展到Average24。我熟悉如何使用 dplyr 包对 R 中的一行执行此操作,但不使用 SAS。
回复:
Data = DATA %>% mutate(Average2 = ifelse(is.na(Average2), Average1, Average2))
解决方案
使用合并函数,它会将第一个非缺失值分配给给定列表中的变量:
Average2=coalesce(Average1,Average2,Average3);
如果需要,您可以进一步对所有 24 个变量使用数组循环,而不是手动编写
推荐阅读
- mysql - 多对多关系:如何从 3 个表中删除记录?
- hive - 即使数据是整数格式,Hive Integer 列也会返回 NULL 值
- canvas - 画布 toDataUrl() 返回黑色图像
- excel - 空间之间的重复自增
- android - 不打算打开 Playstore
- android - 在模块之间共享测试类
- blogs - Pelican 博客 - 验证所有权 Bing 网站管理员
- angular - Angular 6.0.3 在 docker 中不起作用,因为它找不到模块 @angular-devkit/build-angular
- angular - 意外的值“HttpClient”
- caching - Drupal 7 由于在每个页面上清除缓存而非常慢