楼主: egypt2008
2358 12

[数据管理求助] 急求!!stata 数据处理问题 [推广有奖]

  • 7关注
  • 7粉丝

已卖:1630份资源

讲师

52%

还不是VIP/贵宾

-

威望
0
论坛币
16807 个
通用积分
3.3400
学术水平
33 点
热心指数
32 点
信用等级
26 点
经验
5239 点
帖子
230
精华
0
在线时间
814 小时
注册时间
2008-10-20
最后登录
2024-7-18

楼主
egypt2008 发表于 2014-9-19 17:22:00 |AI写论文
50论坛币
刚入手stata  数据处理方面还很不熟练 这儿碰到一个问题急需解决 还往向各位高手请教 问题如下:

        有两张数据表A和B,其中数据表A有个变量与数据表B中某个变量相同,但是观测值多于表B,但是我只想保留表A中那个变量与表B中那个变量观察值相同的数据,请问如何操作?例如:表A的结构是
var1  var2 var3 。。。
  1       ..     ...
  2       ..     ...
  3      ...     ...
  4      ...     ...

表B的结构是
var1
  1            
  3   

如何用命令操作才能在表A中只保留第一个和第三个观测值的数据(这儿仅仅举个例子便于大家理解我的问题,实际数据有很多,如果一个个挑实在太麻烦了),多谢了!   

最佳答案

btlover 查看完整内容

楼主讲得不够清楚,我假设是我以下的情况 数据1: var1 var2 var3 1 .. ... 2 .. ... 3 ... ... 4 ... ... 数据2: var1 var4 1 .. ... 3 ... ... 因为如果 数据2 中 没有var4,根本没有合并两个数据的必要。 如果我的理解没错,那么进行如下操作。 对数据1: sort var1 save data1, replace 对数据2: sort var1 merge 1: ...
关键词:数据处理问题 Stata 数据处理 tata 相同的数据 数据表 如何

沙发
btlover 发表于 2014-9-19 17:22:01
楼主讲得不够清楚,我假设是我以下的情况

数据1:
var1  var2 var3
  1       ..     ...
  2       ..     ...
  3      ...     ...
  4      ...     ...

数据2:
var1  var4
  1       ..     ...
  3      ...     ...

因为如果 数据2 中 没有var4,根本没有合并两个数据的必要。

如果我的理解没错,那么进行如下操作。

对数据1:
sort var1
save data1, replace

对数据2:
sort var1
merge 1:1 var1 using data1

解决问题。

注意,我上面的命令是假定在 数据1 以及 数据2 中的 var1 都是 id 变量,也就是每个观测值都有不同的 id,否则不应该用 1:1。
你可以自己在 Stata 中 help merge
已有 2 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
Sunknownay + 3 + 3 + 3 热心帮助其他会员
SpencerMeng + 20 + 1 + 1 热心帮助其他会员

总评分: 论坛币 + 20  学术水平 + 4  热心指数 + 4  信用等级 + 3   查看全部评分

藤椅
allenwang1 发表于 2014-9-19 17:38:46
use A
merge m:1 var1 using B
drop if _merge!=3
已有 1 人评分论坛币 热心指数 收起 理由
crystal8832 + 5 + 1 热心帮助其他会员

总评分: 论坛币 + 5  热心指数 + 1   查看全部评分

板凳
btlover 发表于 2014-9-19 17:40:39
allenwang1 发表于 2014-9-19 17:38
use A
merge m:1 var1 using B
drop if _merge!=3
楼主的例子里面第一个数据的 id 是唯一的,没必要用 m:1

报纸
allenwang1 发表于 2014-9-19 18:05:02
btlover 发表于 2014-9-19 17:40
楼主的例子里面第一个数据的 id 是唯一的,没必要用 m:1
如何用stata计算出变量的变异系数后提取出变异系数值作为新的变量 你知道吗?

地板
btlover 发表于 2014-9-19 21:13:37
回复楼上
如果你说的变量是 var,那么

sum var
gen vc = r(sd) / r(mean)

vc 就是变异系数
已有 1 人评分论坛币 热心指数 收起 理由
crystal8832 + 5 + 1 热心帮助其他会员

总评分: 论坛币 + 5  热心指数 + 1   查看全部评分

7
egypt2008 发表于 2014-9-19 22:50:52
btlover 发表于 2014-9-19 17:39
楼主讲得不够清楚,我假设是我以下的情况

数据1:
可能兄台没有理解我的意思  我要的不是将两张表合并  而是想让表A只显示按照表B VAR1 中所列示的数据  那个VAR1 是id数据  每个id数据都是唯一的  比如在这个例子中 我只想让表A显示有关第一个和第三个观察值的表A数据(因为表B的id数据只有第一个和第三个观测值) 但是合并之后仍然显示所有数据  想要的结果应该如下所示
表A:
var1  var2 var3 。。。
  1       ..     ...
  3      ...     ...

请问该怎么操作?

8
egypt2008 发表于 2014-9-19 23:21:01
经过我的研究 已解决  特别是要谢谢btlover  所以奖励还是给他吧

9
egypt2008 发表于 2014-9-19 23:37:23
egypt2008 发表于 2014-9-19 22:50
可能兄台没有理解我的意思  我要的不是将两张表合并  而是想让表A只显示按照表B VAR1 中所列示的数据  那 ...
好像还是不行  还望兄台指教

10
btlover 发表于 2014-9-20 00:16:15
egypt2008 发表于 2014-9-19 23:37
好像还是不行  还望兄台指教
要实现你所说的,allenwang1 的最后一个命令也要运行,即
drop if _merge!=3

这个命令要在我写的 merge 1:1 那行命令之后运行。

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-1-8 05:49