Is the what you are after:
> df<-data.frame(cbind("country"=c(rep("Angola", 9), rep("Burundi", 7),
+ rep("Chad", 13)), "year"=c(1975:1983, 1989:1995, 1965:1977)),
+ "war"=c(rep(1,2), rep(0,5), rep(1,2), rep(1,2), rep(0,2), rep(1,3),
+ rep(1,4), rep(0,6), rep(1,3)))
> x <- split(df, df$country)
> do.call(rbind, lapply(x, function(.cty){
+ # create where the war starts
+ .start <- diff(c(0, .cty$war))
+ .cty[(.start == 1) & (.cty$war == 1),]
+ }))
country year war
Angola.1 Angola 1975 1
Angola.8 Angola 1982 1
Burundi.10 Burundi 1989 1
Burundi.14 Burundi 1993 1
Chad.17 Chad 1965 1
Chad.27 Chad 1975 1
On Tue, Jan 27, 2009 at 5:45 PM, Josip Dasovic <[email protected]> wrote:
> Dear R Helpers:
>
> I have a data set where the unit of observation is country-year. I would like
> to generate a new data set based on some inclusionary (exclusionary)
> criteria. Here is an example of the type of data that I have.
>
> df<-data.frame(cbind("country"=c(rep("Angola", 9), rep("Burundi", 7),
> rep("Chad", 13)), "year"=c(1975:1983, 1989:1995, 1965:1977)),
> "war"=c(rep(1,2), rep(0,5), rep(1,2), rep(1,2), rep(0,2), rep(1,3), rep(1,4),
> rep(0,6), rep(1,3)))
>> df
> country year war
> 1 Angola 1975 1
> 2 Angola 1976 1
> 3 Angola 1977 0
> 4 Angola 1978 0
> 5 Angola 1979 0
> 6 Angola 1980 0
> 7 Angola 1981 0
> 8 Angola 1982 1
> 9 Angola 1983 1
> 10 Burundi 1989 1
> 11 Burundi 1990 1
> 12 Burundi 1991 0
> 13 Burundi 1992 0
> 14 Burundi 1993 1
> 15 Burundi 1994 1
> 16 Burundi 1995 1
> 17 Chad 1965 1
> 18 Chad 1966 1
> 19 Chad 1967 1
> 20 Chad 1968 1
> 21 Chad 1969 0
> 22 Chad 1970 0
> 23 Chad 1971 0
> 24 Chad 1972 0
> 25 Chad 1973 0
> 26 Chad 1974 0
> 27 Chad 1975 1
> 28 Chad 1976 1
> 29 Chad 1977 1
>
> What I would like to do is to create a new data frame with only those
> observations for which a) the "war" variable value is 1, (this ie easy
> enough) and 2) it is the first (in time) instance of war for that country for
> that war "episode" (each of the countries above has two war episodes). Thus,
> the new data frame should look like this:
>
> country year war
> 1 Angola 1975 1
> 8 Angola 1982 1
> 10 Burundi 1989 1
> 14 Burundi 1993 1
> 17 Chad 1965 1
> 27 Chad 1975 1
>
> Any suggestions as to how this can be done?
>
> Thanks in advance,
> Josip
>
> R version 2.7.2 Patched (2008-09-20 r47259)
> Mac OSX 10.5.5
>
> ______________________________________________
> [email protected] mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>
--
Jim Holtman
Cincinnati, OH
+1 513 646 9390
What is the problem that you are trying to solve?
______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.