在文件中查找数据与合并 [英] Looking up data within a file versus merging

查看:15
本文介绍了在文件中查找数据与合并的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个文件,其中查看了教师X对教师Y的评分以及评分发生的日期

clear 
rating_id   RatingTeacher   RatedTeacher  Rating          Date     
  1              15             12          1          "1/1/2010"
  2              12             11          2          "1/2/2010"
  3              14             11          3          "1/2/2010"
  4              14             13          2          "1/5/2010"
  5              19             11          4          "1/6/2010"
  5              11             13          1          "1/7/2010"
 end 

我想查看历史记录,以了解RatingTeacher在进行评级时被评级的次数和累计得分。结果将如下所示。

rating_id   RatingTeacher   RatedTeacher  Rating          Date      TimesRated    CumulativeRating  
  1              15             12          1          "1/1/2010"       0              0
  2              12             11          2          "1/2/2010"       1              1
  3              14             11          3          "1/2/2010"       0              0
  4              14             13          2          "1/5/2010"       0              0
  5              19             11          4          "1/6/2010"       0              0
  5              11             13          1          "1/7/2010"       3              9
 end 

我一直在将数据集与其自身合并以使其正常工作,这是很好的。我想知道在文件中有没有更有效的方法

推荐答案

在您的输入数据中,我猜最后rating_id应该是6,日期是MDY。统计主义者成员被要求使用dataex(SSC)来建立数据示例。这不是国家主义,但没有理由采用更低的标准。请参见the Statalist FAQ

我很少看到程序员准确地解释他们所说的"高效"是什么意思,无论它是指更少的代码行、更少的内存使用、更快的速度,还是其他什么,或者仅仅是某个通用的称谓。此代码在观测数据上循环,对于大型数据集,这肯定会很慢。更多in this paper

我们无法与您的merge解决方案进行比较,因为您没有提供代码。

clear 
input rating_id RatingTeacher RatedTeacher Rating str8 SDate 
1 15 12 1 "1/1/2010"
2 12 11 2 "1/2/2010"
3 14 11 3 "1/2/2010"
4 14 13 2 "1/5/2010"
5 19 11 4 "1/6/2010"
6 11 13 1 "1/7/2010"
end 
gen Date = daily(SDate, "MDY") 
sort Date 

gen Wanted = . 
quietly forval i = 1/`=_N' { 
    count if Date <  Date[`i'] & RatedT == RatingT[`i'] 
    replace Wanted = r(N) in `i' 
} 

list, sep(0)  

     +---------------------------------------------------------------------+
     | rating~d   Rating~r   RatedT~r   Rating      SDate    Date   Wanted |
     |---------------------------------------------------------------------|
  1. |        1         15         12        1   1/1/2010   18263        0 |
  2. |        2         12         11        2   1/2/2010   18264        1 |
  3. |        3         14         11        3   1/2/2010   18264        0 |
  4. |        4         14         13        2   1/5/2010   18267        0 |
  5. |        5         19         11        4   1/6/2010   18268        0 |
  6. |        6         11         13        1   1/7/2010   18269        3 |
     +---------------------------------------------------------------------+

这篇关于在文件中查找数据与合并的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆