在文件中查找数据与合并 [英] Looking up data within a file versus merging
本文介绍了在文件中查找数据与合并的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个文件,其中查看了教师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屋!
查看全文