【发布时间】:2018-05-27 20:34:03
【问题描述】:
我正在尝试使用规则创建条件虚拟 (X)
如果在 NA 之前的最后两年 Y=1,则设置 X=1(只计算一次!)。
举个例子:这是我数据中的一个样本:
year country Y
1990 Bahamas 1
1991 Bahamas NA
1992 Bahamas NA
1993 Bahamas 0
1994 Bahamas 1
1995 Bahamas 1
1996 Bahamas NA
1997 Bahamas 1
1998 Bahamas NA
1999 Bahamas 1
2000 Bahamas NA
2001 Bahamas 1
2002 Bahamas 1
2003 Bahamas 0
2004 Bahamas NA
2005 Bahamas 0
2006 Bahamas 0
2007 Bahamas 1
2008 Bahamas NA
2009 Bahamas 1
2010 Bahamas 1
2011 Bahamas 1
下面是 X 虚拟模型的外观:
year country Y X1
1990 Bahamas 1 1
1991 Bahamas NA 0
1992 Bahamas NA 0
1993 Bahamas 0 0
1994 Bahamas 1 1
1995 Bahamas 1 0
1996 Bahamas NA 0
1997 Bahamas 1 1
1998 Bahamas NA 0
1999 Bahamas 1 1
2000 Bahamas NA 0
2001 Bahamas 1 1
2002 Bahamas 1 0
2003 Bahamas 0 0
2004 Bahamas NA 0
2005 Bahamas 0 0
2006 Bahamas 0 0
2007 Bahamas 1 1
2008 Bahamas NA 0
2009 Bahamas 1 0
2010 Bahamas 1 0
2011 Bahamas 1 0
这对我来说有点太复杂了。我一直在阅读 dplyr 这似乎是一个相关的包here。到目前为止,我的阅读将我带到了这条鳕鱼
df %>% mutate(X=ifelse(Y >0) & lag(Y,2,))
我得到错误:
缺少参数“yes”,没有默认值
请告诉我我在这里做错了什么。我也应该把“ifelse”放在“滞后”之前吗?
谢谢。
【问题讨论】:
-
您能否解释一下
X1列是如何创建的?我还不清楚逻辑。 -
X=1 如果 Y 在 NA 之前的最后两年中 =1。例如:1996 年,Y 拥有 NA。那么,过去两年(例如 1994 年和 1995 年)的 Y 变量值是否为 1?是的,在 1994 年 - 因此 X==1 在 1994 年。
-
如果我们有 2000 年的 NA,那么 1998 年和 1999 年的 Y =0,那么 1998 年和 1999 年的 X 应该 =0。但如果我们在 1998 年或 1999 年(即 NA 前两年)有,那么那年 X 将 ==1。
-
我意识到这并不容易解释。在我开始写下来之前,一切在我脑海中都是有意义的。如果您还有其他问题,请告诉我。
-
对不起@Goulou,你要找的模式还不清楚。是
0, 0, NA吗?你能指定你正在寻找的模式吗?
标签: r dplyr data.table plyr