楼主: pcjoshua
29036 18

[其他] 如何批量删除全部是缺失值的变量 [推广有奖]

  • 2关注
  • 4粉丝

已卖:427份资源

副教授

80%

还不是VIP/贵宾

-

威望
0
论坛币
8136 个
通用积分
70.9204
学术水平
17 点
热心指数
21 点
信用等级
14 点
经验
23140 点
帖子
586
精华
0
在线时间
1186 小时
注册时间
2012-4-12
最后登录
2025-3-6

楼主
pcjoshua 在职认证  发表于 2012-9-28 13:19:16 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
目前有个数据A:
A是由很多个小数据合并起来的,但是每个数据的变量不一样。
目前想保留A数据中的部分小数据,但是保留后发现很多变量是不属于这几个小数据的,而且这些变量全是缺失 (因为这些变量来源于其他小数据)。 所以想把这些全部缺失的变量删除,请问有什么好的方法,而不是一个个的去找出来,然后drop掉,一个个找麻烦,因为变量多。

请教各位,谢谢了
二维码

扫码加我 拉你入群

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

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

关键词:缺失值 数据合并 drop 小数据 多变量 如何 而且

本帖被以下文库推荐

沙发
sungmoo 发表于 2012-9-28 18:04:34
*对于数值型变量
foreach v of var _all{
su `v'
if r(N)==0 drop `v'
}
已有 4 人评分学术水平 热心指数 信用等级 收起 理由
张吉东 + 1 + 1 + 1 精彩帖子
1圆圆 + 5 + 2 有帮助~~~~~
Stakiny + 2 + 2 + 2 精彩帖子
pcjoshua + 1 + 1 热心帮助其他会员

总评分: 学术水平 + 9  热心指数 + 6  信用等级 + 3   查看全部评分

藤椅
pcjoshua 在职认证  发表于 2012-9-29 09:34:18
sungmoo 发表于 2012-9-28 18:04
*对于数值型变量
foreach v of var _all{
su `v'
感谢感谢,那顺便再问一个问题

变量值标签能批量重命名吗?
因为两个数据merge或append合并,有些变量标签名字一样,但实际上其内容不一样的。所以想把其中一个数据中的所有变量值标签重命名。
请教您,有什么好的方法没有?
我help后没有发现label可以重命名变量值标签的?

谢谢

板凳
sungmoo 发表于 2012-9-29 15:45:31
变量值标签能批量重命名吗?
因为两个数据merge或append合并,有些变量标签名字一样,但实际上其内容不一样的。所以想把其中一个数据中的所有变量值标签重命名。
请教您,有什么好的方法没有?
我help后没有发现label可以重命名变量值标签的?
可否举一个例子说明你要的结果?

报纸
pcjoshua 在职认证  发表于 2012-9-29 17:38:33
A数据有v1,v2,v3,v4等一系列变量 变量对应有lv1,lv2,lv3,lv4等一系列标签
B数据有v1,v2,x1, x2等一系列变量,变量对应有lv1,lv2,lv3,lv4等一系列标签

A 和B数据除了有一部分的变量相同外,还有一部分变量是不同的,但这些不同的变量(v3,v4与x1,x2)的变量值标签却相同。
我想merge A和B两个数据,以A为master数据的话,B中数据的X1,X2变量的变量值标签为v3,v4与A数据中的v3,v4的变量值标签名字相同,可是define的内容却不同,但两个数据合并时候,B中的v3,v4标签内容就会变化为A中数据所define的label了,这样肯定就不对了。但是
这种label值标签名字相同内容却不同的情况很多,所以想批量把using里的那些变量值标签(如v3,v4)批量修改为其他名字。

谢谢您

地板
pcjoshua 在职认证  发表于 2012-9-29 17:39:22
sungmoo 发表于 2012-9-29 15:45
可否举一个例子说明你要的结果?
A数据有v1,v2,v3,v4等一系列变量 变量对应有lv1,lv2,lv3,lv4等一系列标签
B数据有v1,v2,x1, x2等一系列变量,变量对应有lv1,lv2,lv3,lv4等一系列标签

A 和B数据除了有一部分的变量相同外,还有一部分变量是不同的,但这些不同的变量(v3,v4与x1,x2)的变量值标签却相同。
我想merge A和B两个数据,以A为master数据的话,B中数据的X1,X2变量的变量值标签为v3,v4与A数据中的v3,v4的变量值标签名字相同,可是define的内容却不同,但两个数据合并时候,B中的v3,v4标签内容就会变化为A中数据所define的label了,这样肯定就不对了。但是
这种label值标签名字相同内容却不同的情况很多,所以想批量把using里的那些变量值标签(如v3,v4)批量修改为其他名字。然后再merge

谢谢您

7
sungmoo 发表于 2012-9-29 20:47:13
*先在using文件中用“la copy 旧值签名 新值签名”实现“改名”的功能(旧值签仍有效)
use b,clear
la di
foreach i in `r(names)' {
la copy `i' l`i'
}
*再在新文件中用新值签给变量赋签

8
pcjoshua 在职认证  发表于 2012-9-30 09:10:20
sungmoo 发表于 2012-9-29 20:47
*先在using文件中用“la copy 旧值签名 新值签名”实现“改名”的功能(旧值签仍有效)
use b,clear
la d ...
谢谢哈。我也想到了这个方法
我不知道能否实现 :
我想批量修改变量值标签后,新的变量值标签就取代原来的变量值标签,成为原来的那个变量的变量值标签。
而不用再重新赋上去

9
sungmoo 发表于 2012-9-30 13:07:37
我想批量修改变量值标签后,新的变量值标签就取代原来的变量值标签,成为原来的那个变量的变量值标签。而不用再重新赋上去
个人理解是,Stata可能不支持这种操作。按Stata的逻辑,值签与变量是可以相互独立存在的,但它们之间可以建立关系(并且,值签对变量间可以是一对多的关系,而变量对值签只能是映射关系)。这样,值签的“改名”(即使有改名的命令)或复制相当于新建,需要新建立值签与变量间的关系。另外,从另一个角度看,由于多个变量可能对应同一值签(存在映射关系),值签即使可以改名,也许仍有必要重新一一说明改名后的值签与多个变量间的关系。
已有 1 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
Sunknownay + 100 + 5 + 1 + 1 + 1 热心帮助其他会员

总评分: 经验 + 100  论坛币 + 5  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

10
peyzf 发表于 2016-6-5 16:19:59
对于字符型变量,应该如何处理?即批量删除全部为空的字符型变量?

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-23 00:44