楼主: Cloud_Snake
4804 21

[其他] 在对一套数据进行处理时能否调用另一套数据的某变量 [推广有奖]

11
Mayonnaise 发表于 2012-4-26 09:21:00
这个问题值得仔细探讨呢。。。大家还有什么别的好方法吗?

我的理解是每个stata instance只能在内存加载一个dataset (preserve或者snapshot具体如何保存不确定,但是要用到这样保存下来的数据也必须明确的restore之后才能正常使用)。用矩阵的话当然是个办法。但是感觉这样的话对变量和obs的使用不方便(我个人认为stata的最大的好处之一是语言简练,如果没有这个优点,还不如用matlab,sas,或者r;另外就是stata给矩阵的行列命名的那套东西始终没学会|||), 而且保存中间结果也很不容易(不确定矩阵能否直接以文件形式存在硬盘上,如果不行的话则还是需要把矩阵转为数据集然后保存,很不方便)。

如果数据很大,使用odbc应该是好的解决办法,让数据库服务器而不是stata完成数据的筛选,从而方便的从两个大数据表里取出需要的内容。数据不大的话stata 12里读取excel文件的命令也可以灵活使用,实现从多个数据表调用数据。我只曾经有一次需要用到mysql数据库(读取和写入)。

我没有太多使用大数据集的经验,也很少遇到需要从多个数据表调用数据的情况。所以只是设想了上述办法,并不是说在实践中会很好用。

12
sungmoo 发表于 2012-4-26 15:45:16
这个问题值得仔细探讨呢。。。大家还有什么别的好方法吗?
个人觉得,就本题而言,本题不是“数据调用”问题,而是“数据转换”问题。关键是,楼主要把转换的规则说清楚。

13
Cloud_Snake 学生认证  发表于 2012-4-26 19:33:52
sungmoo 发表于 2012-4-26 07:00
B.dta中电视剧对应的p4有两个值,怎么处理?
同一时段相同的节目类型是相加合计,谢谢!

14
Cloud_Snake 学生认证  发表于 2012-4-26 19:46:58
Mayonnaise 发表于 2012-4-26 09:21
这个问题值得仔细探讨呢。。。大家还有什么别的好方法吗?

我的理解是每个stata instance只能在内存加载 ...
用preserve和restore我也想过,当初想是不是可以先preserve->打开另一套数据->将需要的数据存在一连串暂元里->restore->用暂元数据,不过我刚上手stata不熟悉太多命令,实现起来也挺困难,所以最好有能直接调用的方法。matlab确实容易实现,可是脱离我想完全用stata解决问题的初衷了,否则excel不是更方便~

15
Cloud_Snake 学生认证  发表于 2012-4-26 19:49:41
sungmoo 发表于 2012-4-26 15:45
个人觉得,就本题而言,本题不是“数据调用”问题,而是“数据转换”问题。关键是,楼主要把转换的规则 ...
嗯,目的确实是数据转换,可是我觉得能调用的话岂不是更方便?而且我也没想到数据转换的好办法。我是新手,如果版主有想法的话谢谢赐教!

16
Mayonnaise 发表于 2012-4-26 21:35:59
sungmoo 发表于 2012-4-26 03:45
个人觉得,就本题而言,本题不是“数据调用”问题,而是“数据转换”问题。关键是,楼主要把转换的规则 ...
的确这个问题本身不用这么折腾也能解决。不过我觉得这是个讨论数据调用问题的好机会。顺带着也可以讨论stata如何处理大到无法加载到内存里的数据。

17
Mayonnaise 发表于 2012-4-26 21:40:30
Cloud_Snake 发表于 2012-4-26 07:46
用preserve和restore我也想过,当初想是不是可以先preserve->打开另一套数据->将需要的数据存在一连串暂元 ...
matlab也有matlab的不方便之处啊。比如变量名,日期时间的显示和转换等等。

18
sungmoo 发表于 2012-4-27 05:11:54
use B, clear
ren pt p10
collapse (sum)p*,by(_日期 _媒体  _节目类型)
reshape long p, i(_日期 _媒体  _节目类型) j(_时间段)
ren p v
reshape wide v, i(_日期 _媒体 _时间段) j(_节目类型)

*之后,对变量组v#重命名即可(v1代表“新闻/时事”,v3代表“电视剧”,v6代表“生活服务”,v8代表“广告”,等等)。

19
sungmoo 发表于 2012-4-27 05:18:19
的确这个问题本身不用这么折腾也能解决。不过我觉得这是个讨论数据调用问题的好机会
https://bbs.pinggu.org/thread-696047-2-1.html

20
flyawaykai 在职认证  发表于 2012-4-27 09:02:52
stata可以以变量的形式储存数据,也可以使用矩阵来储存数据。
clear这个命令会清除内存中的所有变量,但并不会清除矩阵。
清除矩阵要使用clear matrix。
所以如果你打开一个新的dta,你依然可以调用已经存在的矩阵的数据。
原理就是这样,具体操作就要help了。
楼主的这个问题其实确实没必要调用数据,就是用一些基本命令折腾一下就好了。

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

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