r - 如何在 R 中的 NA 之后生成虚拟变量

标签 r dplyr data.table plyr

我正在尝试使用以下规则生成虚拟变量,

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)

显然这看起来不正确,我知道这一点。这里的任何帮助将不胜感激。

谢谢。

最佳答案

怎么样

data$X <- 0
data$X[which(is.na(data$DV)) + 1] <- !is.na(data$DV[which(is.na(data$DV)) + 1])

关于r - 如何在 R 中的 NA 之后生成虚拟变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50540392/

相关文章:

r - 赌博算法

r - 将quosure转换为R中的字符串

根据开始和结束时间之间的间隔计算的 R 组变量(以天为单位)

r - 如何使用 R 从字符串中间删除两位数字(01、02 等)的前导零?

r - 相同的查询,不同的结果。可能的原因?

sql - dplyr 中是否可以使用 cut() 样式分箱?

r - 将自定义函数应用于 R 中数据框中每一行的两列

r - 快速计算允许自定义权重的移动平均/滚动函数的方法

r - 在 r 中粘贴、按和 data.table

r - 使用 RestRserve 上传 XLSX 数据