sas - 使用一些更正的信息和一些新信息更新数据集
问题描述
我有一个旧数据集,其中有许多城市的年度高温记录。每个观测值有七个变量: City State Year1 Year2 Year3 Year4 Year5
我还有一个新的数据集,其中在重叠的年份范围内每年都有创纪录的高温。每个观测值有七个变量: City State Year3 Year4 Year5 Year6 Year7
新数据集中的一些城市与旧数据集中的城市相同,有些是全新的。我想将这两个数据集合并为一个具有九个变量的数据集: City State Year1 Year2 Year3 Year4 Year5 Year6 Year7
对于出现在这两个数据集中的那些城市,情况很复杂。对于重叠年份,Year3 Year4 Year5,新数据集中的非缺失值表示对旧数据集的修正,新数据集中的这些非缺失值应该出现在合并数据集中;新数据集中的缺失值表示对旧数据集没有更正,旧数据集中的值应出现在合并数据集中。
在这种情况下如何最好地合并两个数据集?
解决方案
更新应该适合你。下面的例子应该工作。当只有第二个数据集有值时,第二个数据集更新第一个数据集的记录(它不更新缺失值)。它还从第二个数据添加了新城市,请尝试运行下面的示例。
data old_dataset;
input City $ State $ Year1 Year2 Year3 Year4 Year5;
datalines;
city1 state1 90 80 70 60 50
city3 state3 90 80 . 60 50
;
data new_dataset;
input City $ State $ Year1 Year2 Year3 Year4 Year5 Year6 Year7;
datalines;
city1 state1 . . . . . . .
city2 state2 90 80 70 60 50 90 80
city3 state3 90 80 90 60 . 60 50
;
proc sort data=old_dataset;
by city;
run;
proc sort data=new_dataset;
by city;
run;
data want;
update old_dataset new_dataset;
by city;
run;
更新后发生以下事情 1. 添加了新列 2. 第二个数据集的非缺失值更新了第一个数据集的列。
推荐阅读
- python-3.x - plt.savefig 保存空白图像
- node.js - 我应该使用 Nginx 在生产中为 React 提供服务吗?
- php - 有没有办法用scandir循环文件夹?循环时遇到问题
- scala - 传播两个 Seqs scala
- webpack - Webpack 4如何获得正确的字体路径
- php - 如何通过 PHP 删除空的 CSS 属性?
- android - 片段内的 activity.recreate() 导致底部导航栏停止工作
- xml - 获取导致 IIB 中的转换错误的 XML 字段值的 XPath
- emacs - 有没有办法制作
- javascript - 使用查询字符串 Javascript 过滤对象项