【发布时间】:2018-02-27 22:15:29
【问题描述】:
我在 Stata 中处理一些数据时遇到了一个小问题。由于在 Stata 中没有简单的方法来解决它(我可以找到),我决定尝试用我有限的 R 知识来解决它。我失败得很惨。
我需要做的是保持观察(default_year - 1)在年份给定的范围内,对于每个orgnr。换句话说:我只想保留组织(orgnr),如果我每年(年)都有关于它们的信息,直到它们的默认值(default_year)。在他们默认之后我是否有信息是无关紧要的。
这段代码在 R 中的外观如何?
我尝试使用子集函数和一些逻辑运算符,但无法使其工作。
| orgnr | year | default_year | income |
|---|---|---|---|
| 1 | 2000 | 2004 | 100 |
| 1 | 2001 | 2004 | 105 |
| 1 | 2002 | 2004 | 95 |
| 1 | 2003 | 2004 | 75 |
| 2 | 2004 | 2006 | 14 |
| 2 | 2005 | 2006 | 10 |
| 2 | 2003 | 2006 | 6 |
| 3 | 1999 | 2007 | 54 |
| 3 | 2000 | 2007 | 59 |
| 3 | 1998 | 2007 | 50 |
| 3 | 2001 | 2007 | 64 |
| 3 | 2002 | 2007 | 60 |
| 3 | 2003 | 2007 | 51 |
| 3 | 2004 | 2007 | 45 |
| 3 | 2005 | 2007 | 40 |
| 4 | 2010 | 2004 | 5 |
| 4 | 2011 | 2004 | 7 |
| 5 | 1999 | 2000 | 50 |
| 5 | 1998 | 2000 | 45 |
| 5 | 2000 | 2000 | 55 |
| 5 | 2001 | 2000 | 49 |
| 5 | 2002 | 2000 | 51 |
| 6 | 2009 | 0 | 10 |
| 6 | 2010 | 0 | 12 |
预期输出:
| orgnr | year | default_year | income |
|---|---|---|---|
| 1 | 2000 | 2004 | 100 |
| 1 | 2001 | 2004 | 105 |
| 1 | 2002 | 2004 | 95 |
| 1 | 2003 | 2004 | 75 |
| 2 | 2004 | 2006 | 14 |
| 2 | 2005 | 2006 | 10 |
| 2 | 2003 | 2006 | 6 |
| 5 | 1999 | 2000 | 50 |
| 5 | 1998 | 2000 | 45 |
| 5 | 2000 | 2000 | 55 |
| 5 | 2001 | 2000 | 49 |
| 5 | 2002 | 2000 | 51 |
| 6 | 2009 | 0 | 10 |
| 6 | 2010 | 0 | 12 |
【问题讨论】:
-
year < default year不起作用? -
对不起,在原帖中打错了。我的意思是:(default_year - 1)。我需要在默认年份之前一年。