生成条件虚拟ID

时间:2013-07-14 13:50:38

标签: r

我有一个如下所示的数据集。我正在使用R来处理这些数据。前三列(year,id和var)构成原始数据的一部分。我需要创建新变量ans,如下所示

如果var = 1,那么对于每一年(其中var = 1),我需要创建一个新的虚拟ans,其中所有相应的id的值为1,其中记录了var = 1的实例。具有预期输出(ans)的样本数据如下所示。

 year     id     var     ans
 2010      1      1       1
 2010      2      0       0
 2010      1      0       1
 2010      1      0       1
 2011      2      1       1
 2011      2      0       1
 2011      1      0       0
 2011      1      0       0

非常感谢任何有关如何实现这一目标的帮助。

由于 阿努普

1 个答案:

答案 0 :(得分:1)

ddplytransformany

一起使用
DF <- read.table(text=" year     id     var     ans
 2010      1      1       1
 2010      2      0       0
 2010      1      0       1
 2010      1      0       1
 2011      2      1       1
 2011      2      0       1
 2011      1      0       0
 2011      1      0       0", header=TRUE)

library(plyr)
ddply(DF,.(year,id),transform, ans2 = as.numeric(any(var==1)))

#   year id var ans ans2
# 1 2010  1   1   1    1
# 2 2010  1   0   1    1
# 3 2010  1   0   1    1
# 4 2010  2   0   0    0
# 5 2011  1   0   0    0
# 6 2011  1   0   0    0
# 7 2011  2   1   1    1
# 8 2011  2   0   1    1

请注意ddply按设计重新排序。