我有一个数据框,它为不同国家/地区提供事件的开始和结束日期。每个国家(例如 A 国)的事件可以发生多次。
Start.Year <- c("1990","1992","1997","1995")
End.Year <- c("1995","1993","2000","1996")
Country <- c("A","B","A","C")
a <- data.frame(Start.Year,End.Year,Country)
a$Start.Year <- as.numeric(as.character(a$Start.Year))
a$End.Year <- as.numeric(as.character(a$End.Year))
Start.Year End.Year Country
1990 1995 A
1992 1993 B
1997 2000 A
1995 1996 C
我有第二个数据框,它采用时间序列横截面格式(年/国家/地区/事件(是/否)。
b1 <-as.data.frame(expand.grid(year=(1990:2000), Country=unique(a$Country)))
b1$Event <-0
b1$year <- as.numeric(as.character(b1$year))
我怎样才能得到下面的结果(为笨拙的演示道歉)。当年份介于第一个数据帧的开始年份和结束年份之间时,事件应为“1”;每个国家;第二个数据帧已经存在,这意味着我不想转换第一个数据帧,而是将第一个数据帧的信息匹配(?)到第二个数据帧。
我试过
b1$Event[a$Start.Year<=b1$year & a$End.Year>=b1$year] <- 1
但得到“较长的对象长度不是较短对象长度的倍数”作为错误消息。感谢任何提示/建议!
结果旨在:
Year Country Event
1990 A 1
1991 A 1
1992 A 1
1993 A 1
1994 A 1
1995 A 1
1996 A 0
1997 A 1
1998 A 1
1999 A 1
2000 A 1
1990 B 0
1991 B 0
1992 B 1
1993 B 1
1994 B 0
1995 B 0
1996 B 0
1997 B 0
1998 B 0
1999 B 0
2000 B 0
1990 C 0
1991 C 0
1992 C 0
1993 C 0
1994 C 0
1995 C 1
1996 C 1
1997 C 0
1998 C 0
1999 C 0
2000 C 0