我有一个如下所示的数据集。我正在使用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
非常感谢任何有关如何实现这一目标的帮助。
由于 阿努普
答案 0 :(得分:1)
将ddply
与transform
和any
:
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
按设计重新排序。