Suppose you have a data frame with the following structure:
df <- data.frame(a=c(1,2,3,4), b=c(\"job1;job2\", \"job1a\", \"job4;job5;job6\", \"job9;job10;
#Split by ; as before
allJobs <- strsplit(df$b, ";", fixed=TRUE)
#Replicate a by the number of jobs in each case
n <- sapply(allJobs, length)
id <- rep(df$a, times = n)
#Turn allJobs into a vector
job <- unlist(allJobs)
#Retrieve position of each job
jobNum <- unlist(lapply(n, seq_len))
#Combine into a data frame
df2 <- data.frame(id = id, job = job, jobNum = jobNum)