楼主: may3000
4220 14

SAS新手求助如何更新数据集中的变量 [推广有奖]

11
may3000 发表于 2014-3-23 17:37:16
intheangel 发表于 2014-3-23 14:20
只会该variable名一样的,比如你name都有,就会覆盖了,如果一个是name1另一个是name2,就会合并成两列
那如果我有两个变量名是一样的,但是又不想覆盖呢?我只想更新那个name。
因为之前用excel导入的时候name列的中文全部乱码了,我想通过另一个数据集的id匹配来更新这个name,把乱码改回来

12
intheangel 学生认证  发表于 2014-3-23 17:50:43
may3000 发表于 2014-3-23 17:37
那如果我有两个变量名是一样的,但是又不想覆盖呢?我只想更新那个name。
因为之前用excel导入的时候nam ...
如果你只想用b里面的name通过id来改正a里面的对应值;
你在改正前把b设定下只有这两个变量不就可以了么?
data b(keep=id name);
set b;
run;
data c;
merge a b;
by id;
run;
那么a里面就只有name会被对应的b里面的name修改,其他不变
我是一只瘦瘦的小猪~~~
╭︿︿︿╮
{/-◎◎-/}
( (oo) )
  ︶︶︶

13
may3000 发表于 2014-3-23 18:17:17
intheangel 发表于 2014-3-23 17:50
如果你只想用b里面的name通过id来改正a里面的对应值;
你在改正前把b设定下只有这两个变量不就可以了么? ...
这个想法不错,不过我想我的根本问题应该出在id上,a组的id和b组的id 数量上不相等,应该说b组的id是a组的子集,即a组有的idb组并没有,而且a组的id有重复比如两个1三个2,而b组的id都是不重复的。
这样的情况下还能用mergea吗?

14
may3000 发表于 2014-3-23 18:30:54
intheangel 发表于 2014-3-23 17:50
如果你只想用b里面的name通过id来改正a里面的对应值;
你在改正前把b设定下只有这两个变量不就可以了么? ...
我把b去重又sort了一下,这回终于合并成功了。美中不足的是还有少量name乱码被改成了新的乱码orz

15
intheangel 学生认证  发表于 2014-3-23 18:52:31
may3000 发表于 2014-3-23 18:17
这个想法不错,不过我想我的根本问题应该出在id上,a组的id和b组的id 数量上不相等,应该说b组的id是a组的 ...
无论id是什么情况,都可以用,反正在b中id和a中一样的,a中的name就被b中的替代,b中如果id有重复,应该就是用第一个来替代,这样只会warning,但是不会error,总是可以运行的
我是一只瘦瘦的小猪~~~
╭︿︿︿╮
{/-◎◎-/}
( (oo) )
  ︶︶︶

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 19:52