R: Split unbalanced list in data.frame column

后端 未结 2 1633

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;         


        
2条回答
  •  既然无缘
    2020-11-30 15:09

    #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)
    

提交回复
热议问题