, ('i1'), , split , "", "" (sub), "" - , data.frame rbind list.
i1 <- grepl('^[^0-9]+$', exampledf$Col1)
lst <- lapply(split(exampledf, cumsum(i1)), function(x)
data.frame(year= as.numeric(sub('\\/.*', '', x[-1,1])),
month = as.numeric(sub('.*\\/', '', x[-1,1])),
Country = x[1,1] ) )
res <- do.call(rbind, lst)
row.names(res) <- NULL
res
# year month Country
#1 2005 12 Argentina
#2 2005 11 Argentina
#3 2006 12 Bolivia
data.table, 'data.frame' 'data.table' (setDT(exampledf)), cumsum (), (tstrsplit) "Col1" ( ) (/). . setnames. , (:=) NULL.
library(data.table)
res1 <- setDT(exampledf)[, c(tstrsplit(Col1[-1],
'/'),Country = Col1[1L]), .(i2=cumsum(i1))][,i2:= NULL][]
setnames(res1, 1:2, c('year', 'month'))
exampledf<-data.frame(Col1=c("Argentina","2005/12","2005/11",
"Bolivia","2006/12"),stringsAsFactors=FALSE)