【发布时间】:2016-05-19 20:39:53
【问题描述】:
我想我的问题和这个类似:Drop observations in panel data using Stata 但我仍然做错了什么,它对我来说不太有效。
我有包含以下变量的面板数据:
Year - Month - Subject - Trial - Attempt - Reward
每个受试者有 4 次试验(或轮次),每轮尝试 5 次。奖励因尝试和回合而异,第 5 次(最后一次)尝试始终 = 2。对于每个受试者,随机选择 4 次尝试中的一项,使所有 5 次尝试都有reward = 2(通常尝试 1-4 有reward = 1 )。我需要删除那些“奖励试验”。
我知道我需要使用by (http://www.stata.com/manuals13/dby.pdf),但我似乎做错了。如果我这样做:
by trial: drop if attempt == 2 & reward == 2
然后我得到
未排序。
如果我这样做:
by trial, sort: drop if attempt == 2 & reward == 2
当我需要它删除该试验中的所有 5 个观测值时,它会删除 1 个观测值。
数据示例:
* Example generated by -dataex-. To install: ssc install dataex
clear
input int Year str3 Month byte(Subject Trial Attempt Reward) str1 Todrop
2016 "Feb" 1 1 1 1 ""
2016 "Feb" 1 1 2 1 ""
2016 "Feb" 1 1 3 1 ""
2016 "Feb" 1 1 4 1 ""
2016 "Feb" 1 1 5 2 ""
2016 "Feb" 1 2 1 1 ""
2016 "Feb" 1 2 2 1 ""
2016 "Feb" 1 2 3 1 ""
2016 "Feb" 1 2 4 1 ""
2016 "Feb" 1 2 5 2 ""
2016 "Feb" 1 3 1 2 "*"
2016 "Feb" 1 3 2 2 "*"
2016 "Feb" 1 3 3 2 "*"
2016 "Feb" 1 3 4 2 "*"
2016 "Feb" 1 3 5 2 "*"
2016 "Feb" 2 1 1 1 ""
2016 "Feb" 2 1 2 1 ""
2016 "Feb" 2 1 3 1 ""
2016 "Feb" 2 1 4 1 ""
2016 "Feb" 2 1 5 2 ""
2016 "Feb" 2 2 1 2 "*"
2016 "Feb" 2 2 2 2 "*"
2016 "Feb" 2 2 3 2 "*"
2016 "Feb" 2 2 4 2 "*"
2016 "Feb" 2 2 5 2 "*"
2016 "Feb" 2 3 1 1 ""
2016 "Feb" 2 3 2 1 ""
2016 "Feb" 2 3 3 1 ""
2016 "Feb" 2 3 4 1 ""
2016 "Feb" 2 3 5 2 ""
end
以上是两个主题的示例。我想做的是放弃主题 1 的所有试验 3,以及主题 2 的所有试验 2(加星标试验),但不放弃其他试验(非加星标试验)。也就是说,变量Todrop 是*,观察结果为dropped,否则为空。
【问题讨论】:
-
我建议进行一些修改,以在很大程度上改进问题的格式。但是,如果没有样本数据和可重现的示例,您可能会发现很难得到答案。如果有帮助,请看这里:stackoverflow.com/help/mcve
-
嘿,阿米,请看我的回答。如果可行,请接受。谢谢
-
我已经编辑了您的数据示例,以便可以将其作为
input代码直接复制并粘贴到 Stata 中。有关执行此操作的方法,请参阅dataex(SSC)。
标签: stata