首页 > 解决方案 > 在 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))

标签: loopssasmissing-data

解决方案


使用合并函数,它会将第一个非缺失值分配给给定列表中的变量:

Average2=coalesce(Average1,Average2,Average3);

如果需要,您可以进一步对所有 24 个变量使用数组循环,而不是手动编写


推荐阅读