【发布时间】:2018-05-26 07:26:18
【问题描述】:
我正在尝试使用以下规则生成一个虚拟变量,
For DV in Data:
set: Flag "1" for all NA in DV
set: Flag "0" otherwise
下面给出了一个样本数据集,
year country DV
1990 Bahamas 2
1991 Bahamas NA
1992 Bahamas NA
1993 Bahamas 0
1994 Bahamas 1
1995 Bahamas 2
1996 Bahamas NA
1997 Bahamas 2
1998 Bahamas NA
1999 Bahamas 2
2000 Bahamas NA
2001 Bahamas 1
2002 Bahamas NA
2003 Bahamas 1
2004 Bahamas NA
2005 Bahamas 2
2006 Bahamas NA
2007 Bahamas 0
2008 Bahamas 1
2009 Bahamas 2
2010 Bahamas NA
2011 Bahamas 2
从提到的规则可以看出,Flags 的设置如下所示,
year country DV Flag
1990 Bahamas 2 0
1991 Bahamas NA 0
1992 Bahamas NA 0
1993 Bahamas 0 1
1994 Bahamas 1 0
1995 Bahamas 2 0
1996 Bahamas NA 0
1997 Bahamas 2 1
1998 Bahamas NA 0
1999 Bahamas 2 1
2000 Bahamas NA 0
2001 Bahamas 1 1
2002 Bahamas NA 0
2003 Bahamas 1 1
2004 Bahamas NA 0
2005 Bahamas 2 1
2006 Bahamas NA 0
2007 Bahamas 0 1
2008 Bahamas 1 0
2009 Bahamas 2 0
2010 Bahamas NA 0
2011 Bahamas 2 1
需要明确的是,Flag 仅基于列 DV 设置,而不管 DV 之后或之前是什么。
我目前正在尝试这个:
data$Flag <- ave(data$country, data$DV, FUN = function(x) if (max(x) == NA) 1 else 0)
显然这看起来不正确,我知道这一点。在这里的任何帮助将不胜感激。
谢谢。
【问题讨论】:
-
最简单的是
dat$flag <- as.integer(is.na(dat$DV))。
标签: r dplyr data.table plyr